diff --git a/demo/app/cases/editors/ContextEditor.js b/demo/app/cases/editors/ContextEditor.js index a26bdbede..9caa0919c 100644 --- a/demo/app/cases/editors/ContextEditor.js +++ b/demo/app/cases/editors/ContextEditor.js @@ -9,7 +9,7 @@ export default function() { 'oa.1': [ { instanceTypeId: 'cmw.instanceProperty', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'ID', displayAttribute: false, @@ -21,7 +21,7 @@ export default function() { alias: 'id_alias' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Last Modifier', displayAttribute: false, @@ -46,7 +46,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -59,7 +59,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'refToCol', displayAttribute: false, @@ -95,7 +95,7 @@ export default function() { alias: 'isDisabled_alias' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Creator', displayAttribute: false, @@ -120,7 +120,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'sdfsf', displayAttribute: false, @@ -133,7 +133,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -169,7 +169,7 @@ export default function() { alias: 'id_alias' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Process Initiator', displayAttribute: false, diff --git a/demo/app/cases/editors/MultiEditorEditor.js b/demo/app/cases/editors/MultiEditorEditor.js index 16534e5ad..92eb018f2 100644 --- a/demo/app/cases/editors/MultiEditorEditor.js +++ b/demo/app/cases/editors/MultiEditorEditor.js @@ -20,7 +20,7 @@ export default function() { 'oa.1': [ { instanceTypeId: 'cmw.instanceProperty', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'ID', displayAttribute: false, @@ -31,7 +31,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Last Modifier', displayAttribute: false, @@ -54,7 +54,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -66,7 +66,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'refToCol', displayAttribute: false, @@ -99,7 +99,7 @@ export default function() { id: 'isDisabled' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Creator', displayAttribute: false, @@ -122,7 +122,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'sdfsf', displayAttribute: false, @@ -134,7 +134,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -167,7 +167,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Process Initiator', displayAttribute: false, diff --git a/demo/app/cases/list/compactGrid.js b/demo/app/cases/list/compactGrid.js index ad6ae2b77..d1f9a5eaa 100644 --- a/demo/app/cases/list/compactGrid.js +++ b/demo/app/cases/list/compactGrid.js @@ -36,7 +36,7 @@ export default function() { { key: 'textCell', type: 'Datalist', - dataType: 'Instance', + dataType: Core.meta.objectPropertyTypes.INSTANCE, title: 'TextCell', sorting: 'asc', editable: true, @@ -79,7 +79,7 @@ export default function() { }, { key: 'documentCell', - type: 'Document', + type: Core.meta.objectPropertyTypes.DOCUMENT, title: 'Document Cell', editable: true, width: 100 @@ -109,7 +109,7 @@ export default function() { 'oa.1': [ { instanceTypeId: 'cmw.instanceProperty', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'ID', displayAttribute: false, @@ -120,7 +120,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Last Modifier', displayAttribute: false, @@ -143,7 +143,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -155,7 +155,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'refToCol', displayAttribute: false, @@ -188,7 +188,7 @@ export default function() { id: 'isDisabled' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Creator', displayAttribute: false, @@ -211,7 +211,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'sdfsf', displayAttribute: false, @@ -223,7 +223,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -256,7 +256,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Process Initiator', displayAttribute: false, diff --git a/demo/app/cases/list/complexGrid.js b/demo/app/cases/list/complexGrid.js index ba04cba4f..dd489fd6c 100644 --- a/demo/app/cases/list/complexGrid.js +++ b/demo/app/cases/list/complexGrid.js @@ -42,7 +42,7 @@ export default function() { case 5: return 'Reference'; case 6: - return 'Document'; + return Core.meta.objectPropertyTypes.DOCUMENT; case 7: return 'Boolean'; case 0: @@ -197,12 +197,12 @@ export default function() { title: 'Reference Cell', helpText: 'Reference Cell', editable: true, - dataType: 'Instance', + dataType: Core.meta.objectPropertyTypes.INSTANCE, width: 100 }, { key: 'documentCell', - type: 'Document', + type: Core.meta.objectPropertyTypes.DOCUMENT, title: 'Document Cell', helpText: 'Document Cell', editable: true, @@ -254,7 +254,7 @@ export default function() { 'oa.1': [ { instanceTypeId: 'cmw.instanceProperty', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'ID', displayAttribute: false, @@ -265,7 +265,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Last Modifier', displayAttribute: false, @@ -288,7 +288,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -300,7 +300,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'refToCol', displayAttribute: false, @@ -333,7 +333,7 @@ export default function() { id: 'isDisabled' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Creator', displayAttribute: false, @@ -356,7 +356,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'sdfsf', displayAttribute: false, @@ -368,7 +368,7 @@ export default function() { }, { instanceTypeId: 'oa.1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, format: 'Undefined', name: 'coll', displayAttribute: false, @@ -401,7 +401,7 @@ export default function() { id: 'id' }, { - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, format: 'Undefined', name: 'Process Initiator', displayAttribute: false, diff --git a/demo/app/cases/list/editableGrid.js b/demo/app/cases/list/editableGrid.js index 0564ac105..caf550c1f 100644 --- a/demo/app/cases/list/editableGrid.js +++ b/demo/app/cases/list/editableGrid.js @@ -139,16 +139,16 @@ export default () => { { key: 'documentCell', type: 'Datalist', - dataType: 'Document', + dataType: Core.meta.objectPropertyTypes.DOCUMENT, format: 'document', - title: 'Document', + title: Core.meta.objectPropertyTypes.DOCUMENT, editable: true, autocommit: true }, { key: 'referenceCell', type: 'Datalist', - dataType: 'Instance', + dataType: Core.meta.objectPropertyTypes.INSTANCE, title: 'Reference Cell', required: true, controller: new Core.form.editors.reference.controllers.DemoReferenceEditorController({ @@ -165,7 +165,7 @@ export default () => { { key: 'userCell', type: 'Datalist', - dataType: 'Account', + dataType: Core.meta.objectPropertyTypes.ACCOUNT, title: 'User Cell', required: true, controller: new Core.form.editors.reference.controllers.DemoReferenceEditorController({ diff --git a/demo/app/cases/list/grid.js b/demo/app/cases/list/grid.js index 494f2ac6e..dd5238c60 100644 --- a/demo/app/cases/list/grid.js +++ b/demo/app/cases/list/grid.js @@ -1,82 +1,82 @@ - - -import ListCanvasView from 'demoPage/views/ListCanvasView'; - -export default function() { - // 1. Get some data - const dataArray = []; - // for (let i = 0; i < 1000; i++) { - // dataArray.push({ - // textCell: `Text Cell ${i}`, - // numberCell: i + 1, - // dateTimeCell: '2015-07-24T08:13:13.847Z', - // durationCell: 'P12DT5H42M', - // booleanCell: true, - // userCell: [{ id: 'user.1', columns: ['J. J.'] }], - // referenceCell: { name: 'Ref 1' }, - // enumCell: { valueExplained: ['123'] }, - // documentCell: [{ id: '1', columns: ['Doc 1', 'url'] }, { id: '2', columns: ['Doc 2', 'url2'] }] - // }); - // } - - // 2. Create columns - const columns = [ - { - key: 'textCell', - type: 'String', - title: 'Hidden Column', - sorting: 'desc', - isHidden: true - }, - { - key: 'numberCell', - type: 'Double', - title: 'Number Cell' - }, - { - key: 'dateTimeCell', - type: 'DateTime', - title: 'DateTime Cell' - }, - // { - // key: 'durationCell', - // type: 'Duration', - // title: 'Duration Cell' - // }, - // { - // key: 'booleanCell', - // type: 'Boolean', - // title: 'Boolean Cell' - // }, - // { - // key: 'referenceCell', - // type: 'Instance', - // title: 'Reference Cell' - // }, - // { - // key: 'documentCell', - // type: 'Document', - // title: 'Document Cell' - // } - ]; - - const collection = new Backbone.Collection(); - // 4. Create grid - const gridView = Core.list.factory.createDefaultGrid({ - gridViewOptions: { - columns, - showToolbar: true, - childHeight: 35, - useDefaultRowView: true, - minimumVisibleRows: 100 - }, - collection - }); - - gridView.on('execute', () => collection.add({})); - - // 7. Show created views - return new ListCanvasView({ - content: gridView - }); -} + + +import ListCanvasView from 'demoPage/views/ListCanvasView'; + +export default function() { + // 1. Get some data + const dataArray = []; + // for (let i = 0; i < 1000; i++) { + // dataArray.push({ + // textCell: `Text Cell ${i}`, + // numberCell: i + 1, + // dateTimeCell: '2015-07-24T08:13:13.847Z', + // durationCell: 'P12DT5H42M', + // booleanCell: true, + // userCell: [{ id: 'user.1', columns: ['J. J.'] }], + // referenceCell: { name: 'Ref 1' }, + // enumCell: { valueExplained: ['123'] }, + // documentCell: [{ id: '1', columns: ['Doc 1', 'url'] }, { id: '2', columns: ['Doc 2', 'url2'] }] + // }); + // } + + // 2. Create columns + const columns = [ + { + key: 'textCell', + type: 'String', + title: 'Hidden Column', + sorting: 'desc', + isHidden: true + }, + { + key: 'numberCell', + type: 'Double', + title: 'Number Cell' + }, + { + key: 'dateTimeCell', + type: 'DateTime', + title: 'DateTime Cell' + }, + // { + // key: 'durationCell', + // type: 'Duration', + // title: 'Duration Cell' + // }, + // { + // key: 'booleanCell', + // type: 'Boolean', + // title: 'Boolean Cell' + // }, + // { + // key: 'referenceCell', + // type: Core.meta.objectPropertyTypes.INSTANCE, + // title: 'Reference Cell' + // }, + // { + // key: 'documentCell', + // type: Core.meta.objectPropertyTypes.DOCUMENT, + // title: 'Document Cell' + // } + ]; + + const collection = new Backbone.Collection(); + // 4. Create grid + const gridView = Core.list.factory.createDefaultGrid({ + gridViewOptions: { + columns, + showToolbar: true, + childHeight: 35, + useDefaultRowView: true, + minimumVisibleRows: 100 + }, + collection + }); + + gridView.on('execute', () => collection.add({})); + + // 7. Show created views + return new ListCanvasView({ + content: gridView + }); +} diff --git a/demo/app/cases/list/gridSearchAndSelection.js b/demo/app/cases/list/gridSearchAndSelection.js index 7e24f8024..9f65d5b73 100644 --- a/demo/app/cases/list/gridSearchAndSelection.js +++ b/demo/app/cases/list/gridSearchAndSelection.js @@ -9,11 +9,11 @@ export default function() { numberCell: i + 1, dateTimeCell: '2015-07-24T08:13:13.847Z', durationCell: 'P12DT5H42M', - booleanCell: true, + booleanCell: '', userCell: i > 4 ? [{ id: 'user.1', name: 'Nicola Tesla', avatarUrl: 'images/image2.jpg' }] - : [{ id: 'user.1', name: 'Nicola Tesla', avatarUrl: 'images/image2.jpg' }, { id: 'user.2', name: 'Thomas Edison' }], + : null, referenceCell: i > 4 ? [{ id: '1', name: 'Ref 1', url: 'url2' }] : [{ id: '1', name: 'Ref 1' }, { id: '2', name: 'Ref 2', url: 'url2' }], documentCell: i > 4 ? [{ id: '1', name: 'Doc 1', url: 'url1' }] : [{ id: '1', name: 'Doc1.jpg', url: 'url1' }, { id: '2', name: 'Doc 2', url: 'url2' }], enumCell: { valueExplained: ['123'] }, @@ -28,7 +28,6 @@ export default function() { : [{ id: 'user.1', name: 'Nicola Tesla', avatarUrl: 'images/image2.jpg' }, { id: 'user.2', name: 'Thomas Edison' }], referenceCell1: i > 400 ? [{ id: '1', name: 'Ref 1', url: 'url2' }] : [{ id: '1', name: 'Ref 1' }, { id: '2', name: 'Ref 2', url: 'url2' }], documentCell1: i > 400 ? [{ id: '1', name: 'Doc 1', url: 'url1' }] : [{ id: '1', name: 'Doc1.jpg', url: 'url1' }, { id: '2', name: 'Doc 2', url: 'url2' }], - enumCell: { valueExplained: ['123'] } }); } @@ -56,7 +55,7 @@ export default function() { }, { key: 'userCell', - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, title: 'User' }, { @@ -66,12 +65,12 @@ export default function() { }, { key: 'referenceCell', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, title: 'Reference Cell' }, { key: 'documentCell', - type: 'Document', + type: Core.meta.objectPropertyTypes.DOCUMENT, title: 'Document Cell' }, { @@ -96,7 +95,7 @@ export default function() { }, { key: 'userCell1', - type: 'Account', + type: Core.meta.objectPropertyTypes.ACCOUNT, title: 'User' }, { @@ -106,12 +105,12 @@ export default function() { }, { key: 'referenceCell1', - type: 'Instance', + type: Core.meta.objectPropertyTypes.INSTANCE, title: 'Reference Cell' }, { key: 'documentCell1', - type: 'Document', + type: Core.meta.objectPropertyTypes.DOCUMENT, title: 'Document Cell' } ]; diff --git a/demo/app/cases/list/treeGrid.js b/demo/app/cases/list/treeGrid.js index 6e5e51174..7aaba05aa 100644 --- a/demo/app/cases/list/treeGrid.js +++ b/demo/app/cases/list/treeGrid.js @@ -1,103 +1,104 @@ -import CanvasView from 'demoPage/views/CanvasView'; - -// 1. Get some data -export default function () { - const data = []; - const childLength = 3; - const treeHeight = 4; - - const createTree = (parentCollection, level, parent = null) => { - for (let i = 0; i < childLength; i++) { - const item = { - textCell: `Text Cell ${i}`, - numberCell: i + 1, - dateTimeCell: '2015-07-24T08:13:13.847Z', - durationCell: 'P12DT5H42M', - booleanCell: true, - userCell: [{ id: 'user.1', columns: ['J. J.'] }], - referenceCell: { name: 'Ref 1' }, - enumCell: { valueExplained: ['123'] }, - documentCell: [{ id: '1', columns: ['Doc 1', 'url'] }, { id: '2', columns: ['Doc 2', 'url2'] }] - }; - item.parent = parent; - if (level > 0) { - const children = []; - createTree(children, level - 1, item); - item.children = children; - } - parentCollection.push(item); - } - }; - - createTree(data, treeHeight); - - // 2. Create columns - const columns = [ - { - key: 'textCell', - type: 'String', - title: 'TextCell', - sorting: 'asc', - width: 300 - }, - { - key: 'numberCell', - type: 'Double', - title: 'Number Cell', - width: 100 - }, - { - key: 'dateTimeCell', - type: 'DateTime', - title: 'DateTime Cell', - width: 100 - }, - { - key: 'durationCell', - type: 'Duration', - title: 'Duration Cell', - width: 100 - }, - { - key: 'booleanCell', - type: 'Boolean', - title: 'Boolean Cell', - width: 100 - }, - { - key: 'referenceCell', - type: 'Instance', - title: 'Reference Cell', - width: 100 - }, - { - key: 'documentCell', - type: 'Document', - title: 'Document Cell', - width: 100 - } - ]; - - // 3. Create grid - const nativeGridView = Core.list.factory.createDefaultGrid({ - gridViewOptions: { - columns, - selectableBehavior: 'multi', - isTree: true, - childrenAttribute: 'children' - }, - collection: data - }); - - // 4. Show created views - return new CanvasView({ - view: nativeGridView, - canvas: { - height: '250px', - width: '400px' - }, - region: { - float: 'left' - } - }); -} +import CanvasView from 'demoPage/views/CanvasView'; + +// 1. Get some data +export default function () { + const data = []; + const childLength = 3; + const treeHeight = 4; + + const createTree = (parentCollection, level, parent = null) => { + for (let i = 0; i < childLength; i++) { + const item = { + textCell: `Text Cell ${i}`, + numberCell: i + 1, + dateTimeCell: '2015-07-24T08:13:13.847Z', + durationCell: 'P12DT5H42M', + booleanCell: true, + userCell: [{ id: 'user.1', columns: ['J. J.'] }], + referenceCell: { name: 'Ref 1' }, + enumCell: { valueExplained: ['123'] }, + documentCell: [{ id: '1', columns: ['Doc 1', 'url'] }, { id: '2', columns: ['Doc 2', 'url2'] }] + }; + item.parent = parent; + if (level > 0) { + const children = []; + createTree(children, level - 1, item); + item.children = children; + } + parentCollection.push(item); + } + }; + + createTree(data, treeHeight); + + // 2. Create columns + const columns = [ + { + key: 'textCell', + type: 'String', + title: 'TextCell', + sorting: 'asc', + width: 300 + }, + { + key: 'numberCell', + type: 'Double', + title: 'Number Cell', + width: 100 + }, + { + key: 'dateTimeCell', + type: 'DateTime', + title: 'DateTime Cell', + width: 100 + }, + { + key: 'durationCell', + type: 'Duration', + title: 'Duration Cell', + width: 100 + }, + { + key: 'booleanCell', + type: 'Boolean', + title: 'Boolean Cell', + width: 100 + }, + { + key: 'referenceCell', + type: Core.meta.objectPropertyTypes.INSTANCE, + title: 'Reference Cell', + width: 100 + }, + { + key: 'documentCell', + type: Core.meta.objectPropertyTypes.DOCUMENT, + title: 'Document Cell', + width: 100 + } + ]; + + // 3. Create grid + const nativeGridView = Core.list.factory.createDefaultGrid({ + gridViewOptions: { + columns, + selectableBehavior: 'multi', + isTree: true, + showSearch: true, + childrenAttribute: 'children' + }, + collection: data + }); + + // 4. Show created views + return new CanvasView({ + view: nativeGridView, + canvas: { + height: '250px', + width: '400px' + }, + region: { + float: 'left' + } + }); +} diff --git a/src/Meta.ts b/src/Meta.ts index 2836592f8..68c05b572 100644 --- a/src/Meta.ts +++ b/src/Meta.ts @@ -9,22 +9,22 @@ const meta = { formRoot: 'window', reference: 'link', instance: 'link', - instanceproperty: 'link', - tablayout: 'folders', - tabpanel: 'folder', + instanceProperty: 'link', + tabLayout: 'folders', + tabPanel: 'folder', member: 'user', account: 'user', - accountproperty: 'user', + accountProperty: 'user', image: 'image', document: 'paperclip', - documentproperty: 'paperclip', + documentProperty: 'paperclip', enum: 'list-radio', enums: 'list-ul', contextIconType: 'list-ul', - grouppanel: 'list-alt', - horizontallayout: 'columns', + groupPanel: 'list-alt', + horizontalLayout: 'columns', integer: 'superscript', - staticcontent: 'stream', + staticContent: 'stream', date: 'calendar-alt', datetime: 'calendar-alt', duration: 'stopwatch', @@ -32,9 +32,10 @@ const meta = { number: 'superscript', action: 'hand-pointer', role: 'address-card', + roleProperty: 'address-card', orgStructureTemplate: 'sitemap', orgStructure: 'sitemap', - actionbutton: 'hand-pointer', + actionButton: 'hand-pointer', text: 'font', string: 'font', boolean: 'check-square', @@ -43,7 +44,7 @@ const meta = { undefined: 'dot-circle', task: 'tasks', record: 'list-alt', - recordtemplate: 'list-alt', + recordTemplate: 'list-alt', process: 'cogs', case: 'cube', list: 'align-justify', @@ -54,7 +55,7 @@ const meta = { }; Object.entries(meta).forEach(([key, value]) => { - const keyUp = key[0].toUpperCase() + key.slice(1); + const keyUp = _.capitalize(value); meta[keyUp] = value; }); @@ -62,21 +63,23 @@ export const contextIconType = meta; export const objectPropertyTypes = { STRING: 'String', - EXTENDED_STRING: 'ExtendedString', BOOLEAN: 'Boolean', DATETIME: 'DateTime', DURATION: 'Duration', DECIMAL: 'Decimal', INTEGER: 'Integer', DOUBLE: 'Double', - ACCOUNT: 'Account', - DOCUMENT: 'Document', - IMAGE: 'Image', - INSTANCE: 'Instance', - ENUM: 'Enum', - ROLE: 'Role', - ORGANIZATION_UNIT: 'OrganizationalUnit', - URI: 'Uri' + ACCOUNT: 'AccountProperty', + DOCUMENT: 'DocumentProperty', + IMAGE: 'ImageProperty', + INSTANCE: 'InstanceProperty', + ROLE: 'RoleProperty', + ENUM: 'EnumProperty', + ORGANIZATIONAL_UNIT: 'OrganizationalUnit', + CONVERSATION: 'Conversation', + URI: 'UriProperty', + COMPLEX: 'ComplexProperty', + EXTENDED_STRING: 'ExtendedString' }; export const fieldTypes = { diff --git a/src/layout/group/GroupView.js b/src/layout/group/GroupView.js index c0020752d..52dc9cc04 100644 --- a/src/layout/group/GroupView.js +++ b/src/layout/group/GroupView.js @@ -98,9 +98,8 @@ export default Marionette.View.extend({ }, onClickToggleButton(e) { - if (this.ui.toggleCollapseButtons.get(0) === e.currentTarget) { - this.toggleCollapse(); - } + e.stopPropagation(); + this.toggleCollapse(); }, toggleCollapse(collapse = !this.model.get('collapsed')) { diff --git a/src/list/CellViewFactory.ts b/src/list/CellViewFactory.ts index de6033e0f..4763b5814 100644 --- a/src/list/CellViewFactory.ts +++ b/src/list/CellViewFactory.ts @@ -84,7 +84,7 @@ class CellViewFactory implements ICellViewFactory { case objectPropertyTypes.EXTENDED_STRING: return this.__createContextString({ values, column: columnWithExtension, model }); case objectPropertyTypes.ENUM: - case objectPropertyTypes.ORGANIZATION_UNIT: + case objectPropertyTypes.ORGANIZATIONAL_UNIT: case objectPropertyTypes.ROLE: case objectPropertyTypes.INSTANCE: return this.__getReferenceCell({ values, column: columnWithExtension, model }); diff --git a/src/list/collections/DatasetViewReferenceCollection.js b/src/list/collections/DatasetViewReferenceCollection.js deleted file mode 100644 index b20de6da3..000000000 --- a/src/list/collections/DatasetViewReferenceCollection.js +++ /dev/null @@ -1,46 +0,0 @@ -//TODO: Remove after reference editor refactoring -/** - * @param {containerId} options.containerId Container ID to get reference collection's data. - * @param {searchId} options.searchId Reference id to request initial editor's value. - */ -import BaseReferenceCollection from '../../form/editors/impl/datalist/collections/BaseReferenceCollection'; - -export default BaseReferenceCollection.extend({ - initialize(collection, options) { - this.options = options; - }, - - url: 'DatasetData/QueryAutocompleteData', - - fetch(options = { data: {} }) { - const config = options; - - config.type = 'POST'; - - if (config.reset === undefined) { - config.reset = true; - } - - config.data.datasource = this.options.datasourceId; - config.data.query = this.options.query; - - if (config.data.query) { - config.data.query.datasetId = config.data.query.id; - } - if (!this.models[0] || !this.models[0].get('text')) { - config.data.searchId = this.options.searchId; - } else { - config.data.searchId = null; - } - - config.processData = false; - - return Backbone.Collection.prototype.fetch.call(this, { - data: JSON.stringify(config.data), - type: 'POST', - dataType: 'json', - contentType: 'application/json', - traditional: true - }); - } -}); diff --git a/src/list/meta.ts b/src/list/meta.ts index b782a7836..e30f75d84 100644 --- a/src/list/meta.ts +++ b/src/list/meta.ts @@ -1,61 +1,9 @@ -import { objectPropertyTypes } from '../Meta'; - export const contextTypes = { void: 'void', any: 'any', one: 'one' }; -export const queryBuilderActions = { - sort: 'sort', - group: 'group', - filter: 'filters', - aggregation: 'aggregation' -}; - -export const sortDirection = { - ascending: 'Asc', - descending: 'Desc' -}; - -export const columnTypes = { - STRING: 'string', - NUMBER: 'number', - BOOLEAN: 'boolean', - DATETIME: 'dateTime', - HTML: 'html', - DOCUMENT: 'document', - decimal: 'Decimal', - integer: 'Integer', - datetime: 'DateTime', - duration: 'Duration', - string: 'String', - boolean: 'Boolean', - users: 'AccountProperty', - role: 'RoleProperty', - reference: 'InstanceProperty', - enumerable: 'EnumProperty', - document: 'DocumentProperty', - id: 'id' -}; - -export const columnType = columnTypes; - -export const columnWidthByType = { - [objectPropertyTypes.ACCOUNT]: 120, - [objectPropertyTypes.BOOLEAN]: 120, - [objectPropertyTypes.DATETIME]: 120, - [objectPropertyTypes.DECIMAL]: 120, - [objectPropertyTypes.DOCUMENT]: 120, - [objectPropertyTypes.DOUBLE]: 120, - [objectPropertyTypes.DURATION]: 120, - [objectPropertyTypes.ENUM]: 120, - [objectPropertyTypes.EXTENDED_STRING]: 120, - [objectPropertyTypes.INSTANCE]: 120, - [objectPropertyTypes.INTEGER]: 120, - [objectPropertyTypes.STRING]: 120 -}; - export const getDefaultActions = () => [ { id: 'add', @@ -117,21 +65,6 @@ export const pageSize = { 1000000000: 'ALL' }; -export const enabledFilterEditor = model => { - const operator = model.get('operator'); - return ![filterPredicates.set, filterPredicates.notSet].includes(operator); -}; - -export const pagingControlsTypes = { - firstPage: 'fp', - previousPage: 'pp', - twoPagesBefore: 'tpb', - currentPage: 'cp', - nextPage: 'np', - twoPagesNext: 'tpn', - lastPage: 'lp' -}; - export const configurationConstants = { VISIBLE_COLLECTION_RESERVE: 2, VISIBLE_COLLECTION_RESERVE_HALF: 1, @@ -174,7 +107,6 @@ export const classes = { export default { pageSize, contextTypes, - columnTypes, getDefaultActions, classes, configurationConstants diff --git a/src/list/services/FilterEditorsFactory.js b/src/list/services/FilterEditorsFactory.js deleted file mode 100644 index af81ac3a7..000000000 --- a/src/list/services/FilterEditorsFactory.js +++ /dev/null @@ -1,316 +0,0 @@ -import { objectPropertyFormats as dateFormats } from '../../Meta'; -import DatasetViewReferenceCollection from '../collections/DatasetViewReferenceCollection'; -import { filterPredicates, aggregationPredicates, booleanDropdown, columnType, enabledFilterEditor } from '../meta'; -import formatService from 'services/FormatService'; - -const constants = { - aggregationCountClass: 'icon-aggregation', - aggregationSumClass: 'icon-sum' -}; - -export default { - getFilterEditorOptions(filtersConfigurationModel, model, parentModel) { - const editorColumnType = filtersConfigurationModel.get('columnType'); - - const requiredValidator = Core.form.repository.validators.required(); - const requiredIfEnabled = function required(value) { - return enabledFilterEditor(parentModel) ? requiredValidator(value) : undefined; - }; - - switch (editorColumnType) { - case columnType.decimal: - return { - type: 'Number', - model, - key: 'value', - changeMode: 'keydown', - autocommit: true, - validators: [requiredIfEnabled], - min: null, - max: null, - allowFloat: true - }; - case columnType.integer: - return { - type: 'Number', - model, - key: 'value', - changeMode: 'keydown', - autocommit: true, - validators: [requiredIfEnabled], - min: null, - max: null, - allowFloat: false - }; - case columnType.datetime: { - const dateDisplayFormat = formatService.getDateDisplayFormat(filtersConfigurationModel.get('dataFormat')); - const filterDateFormat = filtersConfigurationModel.get('dataFormat'); - if ( - filterDateFormat === dateFormats.SHORT_DATE || - filterDateFormat === dateFormats.SHORT_TIME || - filterDateFormat === dateFormats.CONDENSED_DATE || - filterDateFormat === dateFormats.MONTH_DAY || - filterDateFormat === dateFormats.YEAR_MONTH - ) { - return { - type: 'Date', - dateDisplayFormat, - model, - key: 'value', - validators: [requiredIfEnabled], - changeMode: 'keydown', - autocommit: true - }; - } - return { - type: 'DateTime', - dateDisplayFormat, - model, - key: 'value', - changeMode: 'keydown', - validators: [requiredIfEnabled], - autocommit: true - }; - } - case columnType.duration: - return { - type: 'Duration', - model, - key: 'value', - changeMode: 'keydown', - validators: [requiredIfEnabled], - autocommit: true, - showEmptyParts: true - }; - case columnType.boolean: - return { - type: 'BooleanGroup', - model, - key: 'value', - changeMode: 'keydown', - autocommit: true, - items: [ - { - id: booleanDropdown.yes, - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.YES') - }, - { - id: booleanDropdown.no, - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.NO') - }, - { - id: booleanDropdown.null, - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.NULL') - } - ] - }; - case columnType.document: - return { - type: 'RadioGroup', - model, - key: 'value', - changeMode: 'keydown', - autocommit: true, - radioOptions: [ - { - id: true, - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.EXIST') - }, - { - id: false, - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.NOTEXIST'), - isCancel: true - } - ] - }; - case columnType.string: - return { - type: 'Text', - model, - key: 'value', - validators: [requiredIfEnabled], - autocommit: true, - changeMode: 'keydown' - }; - case columnType.id: - case columnType.users: - case columnType.reference: - case columnType.role: - case columnType.enumerable: { - const datasourceId = filtersConfigurationModel.get('datasourceId'); - model.set('datasourceId', datasourceId, { silent: true }); - let searchId = null; - const editorValue = model.get('value'); - - if (typeof editorValue === 'string' || typeof editorValue === 'number') { - searchId = editorValue; - } - return { - type: 'Datalist', - model, - key: 'value', - autocommit: true, - controller: new Core.form.editors.reference.controllers.BaseReferenceEditorController({ - collection: new DatasetViewReferenceCollection([], { datasourceId, searchId, query: filtersConfigurationModel.get('query') }) - }), - textFilterDelay: 1000, - showCheckboxes: true, - validators: [requiredIfEnabled], - maxQuantitySelected: Infinity, - valueType: 'id' - }; - } - default: - throw new Error(`Creation of filter's editor failed: Unknown column type ${editorColumnType}`); - } - }, - - getAggregationPredicates(inputColumnType, model) { - const aggregationMethodsList = [ - { - id: aggregationPredicates.count, - title: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.COUNT'), - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.COUNT') - } - ]; - - switch (inputColumnType) { - case columnType.decimal: - case columnType.integer: - case columnType.duration: - aggregationMethodsList.push({ - id: aggregationPredicates.sum, - title: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.SUM'), - displayText: Localizer.get('PROCESS.DATASET.EDITORPREDICATES.SUM') - }); - break; - default: - break; - } - - return new Core.form.editors.RadioGroupEditor({ - model, - key: 'aggregationMethod', - changeMode: 'keydown', - autocommit: true, - radioOptions: aggregationMethodsList - }); - }, - - getFilterPredicates(inputColumnType, model) { - let filterPredicateCollection; - - switch (inputColumnType) { - case columnType.decimal: - case columnType.integer: - case columnType.duration: - case columnType.datetime: - filterPredicateCollection = new Backbone.Collection( - [ - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.EQUALTO'), - id: filterPredicates.equal - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTEQUALTO'), - id: filterPredicates.notEqual - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.GREATERTHAN'), - id: filterPredicates.greaterThan - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.LESSTHAN'), - id: filterPredicates.lessThan - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.BETWEEN'), - id: filterPredicates.between - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.SET'), - id: filterPredicates.set - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTSET'), - id: filterPredicates.notSet - } - ], - { comparator: null } - ); - break; - case columnType.string: - filterPredicateCollection = new Backbone.Collection( - [ - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.SUBSTRINGOF'), - id: filterPredicates.substringOf - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTSUBSTRINGOF'), - id: filterPredicates.notSubstringOf - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.STARTSWITH'), - id: filterPredicates.startsWith - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.ENDSWITH'), - id: filterPredicates.endsWith - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.EQUALTO'), - id: filterPredicates.equal - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTEQUALTO'), - id: filterPredicates.notEqual - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.SET'), - id: filterPredicates.set - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTSET'), - id: filterPredicates.notSet - } - ], - { comparator: null } - ); - break; - case columnType.users: - case columnType.reference: - case columnType.enumerable: - case columnType.role: - filterPredicateCollection = new Backbone.Collection( - [ - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.EQUALTO'), - id: filterPredicates.equal - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.SET'), - id: filterPredicates.set - }, - { - text: Localizer.get('PROCESS.DATASET.EDITORVALUES.NOTSET'), - id: filterPredicates.notSet - } - ], - { comparator: null } - ); - break; - default: - break; - } - - return new Core.form.editors.DatalistEditor({ - model, - key: 'operator', - collection: filterPredicateCollection, - allowEmptyValue: false, - valueType: 'id', - autocommit: true - }); - } -}; diff --git a/src/list/services/FilterGetterService.js b/src/list/services/FilterGetterService.js deleted file mode 100644 index b02ebb373..000000000 --- a/src/list/services/FilterGetterService.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - getGridFilterFromConfigurationModel() {} -}; diff --git a/src/list/views/ConfigurationPanel.js b/src/list/views/ConfigurationPanel.js deleted file mode 100644 index c628a79a9..000000000 --- a/src/list/views/ConfigurationPanel.js +++ /dev/null @@ -1,79 +0,0 @@ -import template from '../templates/gridColumnConfigTabPanel.html'; -import PanelView from './сonfigurationPanel/GridColumnConfigPanelView'; - -const constants = { - animationTime: 100, - contentRegion: '.js-content-region' -}; - -export default Marionette.View.extend({ - initialize(options) { - this.panelViewModel = new Backbone.Model({ - columnModel: new Backbone.Model() - }); - - this.isOpen = false; - this.panelView = this.__createPanelView(options.panelView, options.panelViewOptions); - }, - - template: Handlebars.compile(template), - - className: 'columns-filters js-columns-filters dev-columns-filters', - - events: { - mouseleave: '__handleMouseLeave' - }, - - triggers: { - mouseenter: 'mouseenter' - }, - - regions: { - tabPanelRegion: '.js-tab-panel-region' - }, - - onRender() { - const panelView = new PanelView(); - this.showChildView('tabPanelRegion', panelView); - - this.listenTo(Core.services.GlobalEventService, 'window:mousedown:captured', target => this.__handleGlobalMousedown(target, panelView)); - }, - - updatePanelConfiguration(level, viewData) { - this.panelViewModel.set({ - columnType: this.columnModel.get('columnType'), - filtersConfigurationModel: new Backbone.Model({ - datasourceId: this.datasourceId, - columnType: this.columnModel.get('columnType'), - dataFormat: this.columnModel.get('dataFormat'), - query: this.columnModel.get('queryConfiguration') - }), - level, - columnModel: viewData - }); - }, - - __handleGlobalMousedown(target, panelView) { - if (!this.__isNestedInPanel(target) && !this.__isNestedInButton(target, panelView)) { - this.trigger('mouseDown', true); - } - }, - - __isNestedInButton(target, panelView) { - return this.el === target || this.el.contains(target) || panelView.el.contains(target); - }, - - __isNestedInPanel(testedEl) { - return testedEl.closest('.js-core-ui__global-popup-region') || testedEl.closest('.js-grid-header-region'); - }, - - __createPanelView(panelView, options) { - return new panelView(options); - }, - - __handleMouseLeave(event) { - if (event.toElement.closest(constants.contentRegion)) { - this.trigger('mouseleave'); - } - } -}); diff --git a/src/list/views/GridView.ts b/src/list/views/GridView.ts index 60ca37dd5..4eab7a135 100644 --- a/src/list/views/GridView.ts +++ b/src/list/views/GridView.ts @@ -14,7 +14,6 @@ import ActionMenuView from '../../components/toolbar/views/ActionMenuView'; import MobileService from '../../services/MobileService'; import LoadingBehavior from '../../views/behaviors/LoadingBehavior'; import SearchBarView from '../../views/SearchBarView'; -import ConfigurationPanel from './ConfigurationPanel'; import EmptyGridView from './EmptyGridView'; import LayoutBehavior from '../../layout/behaviors/LayoutBehavior'; import { getDefaultActions, classes, configurationConstants, contextTypes } from '../meta'; @@ -853,10 +852,6 @@ export default Marionette.View.extend({ return this.isRendered() && !this.isDestroyed(); }, - __initializeConfigurationPanel() { - this.__configurationPanel = new ConfigurationPanel(); - }, - __onSearch(text) { if (this.options.isTree) { this.trigger('toggle:collapse:all', !text && !this.options.expandOnShow); diff --git a/src/list/views/PagingView.js b/src/list/views/PagingView.js deleted file mode 100644 index 378d903ea..000000000 --- a/src/list/views/PagingView.js +++ /dev/null @@ -1,194 +0,0 @@ -import template from '../templates/paging.html'; -import { pageSize, pagingControlsTypes } from '../meta'; - -export default Marionette.View.extend({ - initialize() { - this.model.set('pageControls', this.__getPageControlsConfig()); - }, - - updateView(newModel) { - this.model.set(newModel.attributes); - this.__updatePagination(); - }, - - setSelectedRowsCount(count) { - this.view.model.set('selectedRowsCount', count); - this.view.render(); - }, - - template: Handlebars.compile(template), - - className: 'dataset-footer', - - events() { - return { - 'click .js-first-button': () => this.__switchPageTo(pagingControlsTypes.firstPage), - 'click .js-first-page-button': () => this.__switchPageTo(pagingControlsTypes.firstPage), - 'click .js-previous-button': () => this.__switchPageTo(pagingControlsTypes.previousPage), - 'click .js-prevPage-button': () => this.__switchPageTo(pagingControlsTypes.previousPage), - 'click .js-doublePrev-button': () => this.__switchPageTo(pagingControlsTypes.twoPagesBefore), - 'click .js-currentPage-button': () => this.__switchPageTo(pagingControlsTypes.currentPage), - 'click .js-nextPage-button': () => this.__switchPageTo(pagingControlsTypes.nextPage), - 'click .js-doubleNext-button': () => this.__switchPageTo(pagingControlsTypes.twoPagesNext), - 'click .js-next-button': () => this.__switchPageTo(pagingControlsTypes.nextPage), - 'click .js-last-button': () => this.__switchPageTo(pagingControlsTypes.lastPage), - 'click .js-last-page-button': () => this.__switchPageTo(pagingControlsTypes.lastPage) - }; - }, - - regions: { - recordsPerPageRegion: '.js-records-per-page-region' - }, - - onRender() { - const recordsPerPageView = this.__createRecordsPerPageView(); - - this.showChildView('recordsPerPageRegion', recordsPerPageView); - this.listenTo(recordsPerPageView, 'execute', this.__switchRecordsOnPage); - }, - - __createRecordsPerPageView() { - const menuItems = Object.entries(pageSize).map(entrie => ({ - id: entrie[0], - name: entrie[1] - })); - - const sizeSelected = menuItems.find(num => num.id === this.model.get('size').toString()); - - return Core.dropdown.factory.createMenu({ - text: `${Localizer.get('PROCESS.LISTS.LISTCONTEXT.PAGESIZE')}: ${sizeSelected.name}`, - items: menuItems, - direction: 'up', - popoutFlow: 'left' - }); - }, - - __getPageControlsConfig() { - const currentPageSize = +this.model.get('size'); - this.currentPage = this.model.get('page') || 1; - - if (isNaN(currentPageSize) || currentPageSize === 0 || this.model.get('totalRowsCount') === 0) { - this.pageCount = 1; - } else { - this.pageCount = Math.ceil(this.model.get('totalRowsCount') / currentPageSize); - } - - const countCurrentPageDiff = this.pageCount - this.currentPage; - - const pageControlsConfig = { - currentPage: this.currentPage, - firstPage: null, - prevPage: null, - doublePrevPage: null, - nextPage: null, - doubleNext: null, - lastPage: null, - hasPrevItems: false, - hasPostItems: false - }; - - if (countCurrentPageDiff >= 0) { - switch (this.currentPage) { - case 1: - break; - case 4: - pageControlsConfig.doublePrevPage = this.currentPage - 2; - case 3: - pageControlsConfig.prevPage = this.currentPage - 1; - case 2: - pageControlsConfig.firstPage = 1; - break; - default: - pageControlsConfig.firstPage = 1; - pageControlsConfig.prevPage = this.currentPage - 1; - pageControlsConfig.doublePrevPage = this.currentPage - 2; - pageControlsConfig.hasPrevItems = true; - break; - } - - switch (countCurrentPageDiff) { - case 0: - break; - case 3: - pageControlsConfig.doubleNext = this.currentPage + 2; - case 2: - pageControlsConfig.nextPage = this.currentPage + 1; - case 1: - pageControlsConfig.lastPage = this.pageCount; - break; - default: - pageControlsConfig.lastPage = this.pageCount; - pageControlsConfig.nextPage = this.currentPage + 1; - pageControlsConfig.doubleNext = this.currentPage + 2; - pageControlsConfig.hasPostItems = true; - break; - } - } - - this.lastPage = this.pageCount; - - return pageControlsConfig; - }, - - __switchRecordsOnPage(menuItemId) { - this.model.set({ size: menuItemId }); - this.trigger('paging:change:size'); - }, - - __switchPageTo(pageType) { - const newPageNumber = this.__getPageNumberFromEvent(pageType); - - if (this.model.get('page') !== newPageNumber) { - this.model.set({ page: newPageNumber }); - this.trigger('paging:change:page'); - } - }, - - __updatePagination() { - this.view.model.set('pageControls', this.__getPageControlsConfig()); - this.view.render(); - }, - - __getPageNumberFromEvent(pageType) { - let nextPage; - - if (this.pageCount > 1) { - switch (pageType) { - case pagingControlsTypes.firstPage: - nextPage = 1; - break; - case pagingControlsTypes.previousPage: - nextPage = this.currentPage - 1; - break; - case pagingControlsTypes.twoPagesBefore: - nextPage = this.currentPage - 2; - break; - case pagingControlsTypes.currentPage: - nextPage = this.currentPage; - break; - case pagingControlsTypes.nextPage: - nextPage = this.currentPage + 1; - break; - case pagingControlsTypes.twoPagesNext: - nextPage = this.currentPage + 2; - break; - case pagingControlsTypes.lastPage: - nextPage = this.lastPage; - break; - default: - nextPage = this.currentPage; - break; - } - } else { - nextPage = this.currentPage; - } - - if (nextPage < 1) { - nextPage = 1; - } else if (nextPage > this.lastPage) { - nextPage = this.lastPage; - } - - return nextPage; - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/ConfigPanelAggregationView.js" "b/src/list/views/\321\201onfigurationPanel/ConfigPanelAggregationView.js" deleted file mode 100644 index 66a9d088b..000000000 --- "a/src/list/views/\321\201onfigurationPanel/ConfigPanelAggregationView.js" +++ /dev/null @@ -1,27 +0,0 @@ -import template from '../../templates/filterPanel/configPanelAggregation.html'; -import FilterEditorsFactory from '../../services/FilterEditorsFactory'; - -export default Marionette.View.extend({ - //todo make it functional component - initialize() { - if (this.model.get('columnModel')) { - this.listenTo(this.model, 'change', () => this.render()); - } - }, - - className: 'dev-aggregation-view', - - regions: { - dropdownRegion: '.js-dropdown-region' - }, - - template: Handlebars.compile(template), - - onRender() { - this.getRegion('dropdownRegion').show(this.__createView()); - }, - - __createView() { - return FilterEditorsFactory.getAggregationPredicates(this.model.get('columnType'), this.model.get('columnModel').get('aggregation')); - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/ConfigPanelFilterView.js" "b/src/list/views/\321\201onfigurationPanel/ConfigPanelFilterView.js" deleted file mode 100644 index 516cc4c4c..000000000 --- "a/src/list/views/\321\201onfigurationPanel/ConfigPanelFilterView.js" +++ /dev/null @@ -1,75 +0,0 @@ -import template from '../../templates/filterPanel/configPanelFilter.html'; -import FilterItemView from './FilterItemView'; -import { columnType } from '../../meta'; - -export default Marionette.CollectionView.extend({ - initialize() { - if (this.model.get('columnModel') && !this.model.get('columnModel').has('filters')) { - this.listenTo(this.model, 'change', this.__updateCollection); - } - - this.__updateCollection(); - }, - - templateContext() { - return { - showAddButton: this.model.get('columnType') !== columnType.boolean - }; - }, - - template: Handlebars.compile(template), - - childView: FilterItemView, - - childViewEvents: { - 'click:removeButton': '__onClickRemoveButton', - attach: '__updateAddFilterButton', - change: '__updateAddFilterButton' - }, - - childViewContainer: '.js-config-panel-filter', - - triggers: { - 'click .js-apply-button': 'apply:filter', - 'click .js-add-filter-button': 'add:filter' - }, - - childViewOptions() { - return { - filtersConfigurationModel: this.model.get('filtersConfigurationModel') - }; - }, - - ui: { - addFilterButton: '.js-add-filter-button' - }, - - __updateAddFilterButton() { - this.ui.addFilterButton.toggle(!this.children.some(child => child.isEmptyValue && child.isEmptyValue())); - }, - - validate() { - const errors = this.children.reduce((res, child) => { - const childErrors = child.validate(); - if (childErrors.length) { - res.push(...childErrors); - } - return res; - }, []); - - return errors.length; - }, - - __updateCollection() { - this.collection = this.model.get('columnModel').get('filters'); - this.render(); - }, - - __onClickRemoveButton(view) { - this.model - .get('columnModel') - .get('filters') - .remove(view.model); - this.render(); - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/ConfigPanelGroupView.js" "b/src/list/views/\321\201onfigurationPanel/ConfigPanelGroupView.js" deleted file mode 100644 index 10320a5eb..000000000 --- "a/src/list/views/\321\201onfigurationPanel/ConfigPanelGroupView.js" +++ /dev/null @@ -1,55 +0,0 @@ -import template from '../../templates/filterPanel/configPanelGroup.html'; - -const constants = { - groupByClass: 'icon-group', - subGroupByClass: 'icon-subgroup', - groupByCollumnId: 'groupByCollumn', - subGroupByCollumnId: 'subGroupByCollumn' -}; - -export default Marionette.View.extend({ - initialize() { - if (this.model.get('columnModel')) { - this.listenTo(this.model, 'change', () => this.render()); - } - }, - - template: Handlebars.compile(template), - - regions: { - groupRadioRegion: '.js-button-group' - }, - - onRender() { - const groupRadioButton = this.__createGroupByColumn(); - - this.showChildView('groupRadioRegion', groupRadioButton); - this.listenTo(groupRadioButton, 'change', item => this.trigger(item.value)); - }, - - __createGroupByColumn() { - const radioOptions = [ - { - id: constants.groupByCollumnId, - title: Localizer.get('PROCESS.DATASET.QUERYBUILDER.GROUPBY'), - displayText: Localizer.get('PROCESS.DATASET.QUERYBUILDER.GROUPBY') - } - ]; - - if (this.model.get('level') > 0 && this.model.get('columnModel').get('group').columnlevel !== 1) { - radioOptions.push({ - id: constants.subGroupByCollumnId, - title: Localizer.get('PROCESS.DATASET.QUERYBUILDER.SUBGROUPBY'), - displayText: Localizer.get('PROCESS.DATASET.QUERYBUILDER.SUBGROUPBY') - }); - } - - return new Core.form.editors.RadioGroupEditor({ - model: this.model.get('columnModel').get('group'), - key: 'groupings', - changeMode: 'keydown', - autocommit: true, - radioOptions - }); - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/ConfigPanelSortView.js" "b/src/list/views/\321\201onfigurationPanel/ConfigPanelSortView.js" deleted file mode 100644 index 4b2356dca..000000000 --- "a/src/list/views/\321\201onfigurationPanel/ConfigPanelSortView.js" +++ /dev/null @@ -1,68 +0,0 @@ -import { sortDirection } from '../../meta'; -import template from '../../templates/filterPanel/configPanelSort.html'; - -export default Marionette.View.extend({ - initialize() { - if (this.model.get('columnModel')) { - this.listenTo(this.model, 'change', () => this.render()); - } - }, - - template: Handlebars.compile(template), - - regions: { - sortDirectionRegion: '.js-sort-direction-region', - changeNullPositionRegion: '.js-change-null-position-region' - }, - - onRender() { - if (this.model.get('columnModel').has('sort')) { - const nullOnTopCheckBox = this.__createNullOnTopCheckBox(); - const view = this.__createSortDirectionRadioGroup(); - - this.showChildView('sortDirectionRegion', view); - this.showChildView('changeNullPositionRegion', nullOnTopCheckBox); - - if ( - !this.model - .get('columnModel') - .get('sort') - .has('direction') - ) { - nullOnTopCheckBox.setEnabled(false); - } - } - }, - - __createSortDirectionRadioGroup() { - return new Core.form.editors.RadioGroupEditor({ - model: this.model.get('columnModel').get('sort'), - key: 'direction', - changeMode: 'keydown', - autocommit: true, - radioOptions: [ - { - id: sortDirection.ascending, - title: Localizer.get('PROCESS.DATASET.SORTINGVALUES.ASCENDING'), - displayText: Localizer.get('PROCESS.DATASET.SORTINGVALUES.ASCENDING') - }, - { - id: sortDirection.descending, - title: Localizer.get('PROCESS.DATASET.SORTINGVALUES.DESCENDING'), - displayText: Localizer.get('PROCESS.DATASET.SORTINGVALUES.DESCENDING') - } - ] - }); - }, - - __createNullOnTopCheckBox() { - return new Core.form.editors.BooleanEditor({ - model: this.model.get('columnModel').get('sort'), - key: 'nullValuesOnTop', - changeMode: 'keydown', - autocommit: true, - title: Localizer.get('PROCESS.DATASET.SORTINGVALUES.NULLONTOP'), - displayText: Localizer.get('PROCESS.DATASET.SORTINGVALUES.NULLONTOP') - }); - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/FilterItemView.js" "b/src/list/views/\321\201onfigurationPanel/FilterItemView.js" deleted file mode 100644 index 2c559c1fd..000000000 --- "a/src/list/views/\321\201onfigurationPanel/FilterItemView.js" +++ /dev/null @@ -1,127 +0,0 @@ -import template from '../../templates/filterPanel/filterItem.html'; -import { columnType, enabledFilterEditor } from '../../meta'; -import FilterValueItemView from './FilterValueItemView'; -import FilterEditorsFactory from '../../services/FilterEditorsFactory'; - -export default Marionette.View.extend({ - initialize(options) { - this.__createFilterCompositeView(options.filtersConfigurationModel.get('columnType')); - }, - - regions: { - filterRegion: '.js-filter-region', - predicateDropdownRegion: '.js-predicate-dropdown-region' - }, - - ui: { - removeButton: '.js-remove-button' - }, - - triggers: { - 'pointerdown @ui.removeButton': 'click:removeButton' - }, - - template: Handlebars.compile(template), - - templateContext() { - return { - isPredicateDropdownExist: !!this.filterPredicateDropdown - }; - }, - - className: 'dataset-options-filters', - - onRender() { - this.showChildView('filterRegion', this.filterView); - this.listenTo(this.filterView, 'change', () => this.trigger('change')); - this.listenTo(this.filterView, 'keyup:editor', this.__applyFilterChange); - if (this.filterPredicateDropdown) { - this.showChildView('predicateDropdownRegion', this.filterPredicateDropdown); - this.listenTo(this.filterPredicateDropdown, 'change', this.__applyFilterPredicateChange); - } - this.__adjustRemoveFilterButtonVisibility(); - this.__applyEditorVisibility(this.model.get('operator')); - }, - - isEmptyValue() { - return this.filterView.children.some(child => child.editor.isEmptyValue()); - }, - - validate() { - return this.filterView.children.reduce((res, child) => { - const error = child.validate && child.validate(); - if (error) { - res.push(error); - } - return res; - }, []); - }, - - __createFilterView() { - return new FilterValueItemView({ - filtersConfigurationModel: this.getOption('filtersConfigurationModel'), - collection: this.model.get('values'), - parentModel: this.model - }); - }, - - __createFilterPredicateDropdown(predicateColumnType, model) { - return FilterEditorsFactory.getFilterPredicates(predicateColumnType, model); - }, - - __createFilterCompositeView(filterType) { - switch (filterType) { - case columnType.string: - case columnType.integer: - case columnType.decimal: - case columnType.datetime: - case columnType.duration: - case columnType.users: - case columnType.reference: - case columnType.role: - this.filterView = this.__createFilterView(); - this.filterPredicateDropdown = this.__createFilterPredicateDropdown(this.getOption('filtersConfigurationModel').get('columnType'), this.model); - this.el.classList.remove('filters_settings-inline-after'); - break; - case columnType.id: - case columnType.enumerable: - case columnType.boolean: - case columnType.document: - this.filterView = this.__createFilterView(); - this.el.classList.add('filters_settings-inline-after'); - break; - default: - throw new Error(`Unknown filter type ${filterType}`); - } - }, - - __applyFilterPredicateChange() { - this.__applyEditorVisibility(); - }, - - __applyFilterChange() { - this.trigger('apply:editorChanges', this.model); - }, - - __adjustRemoveFilterButtonVisibility() { - switch (this.getOption('filtersConfigurationModel').get('columnType')) { - case columnType.enumerable: - case columnType.users: - case columnType.document: - case columnType.boolean: - this.ui.removeButton.hide(); - break; - default: - this.ui.removeButton.show(); - } - }, - - __applyEditorVisibility() { - const region = this.getRegion('filterRegion'); - if (enabledFilterEditor(this.model)) { - delete region.el.style.display; - } else { - region.el.style.display = 'none'; - } - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/FilterValueItemView.js" "b/src/list/views/\321\201onfigurationPanel/FilterValueItemView.js" deleted file mode 100644 index 127887cbb..000000000 --- "a/src/list/views/\321\201onfigurationPanel/FilterValueItemView.js" +++ /dev/null @@ -1,32 +0,0 @@ -import form from 'form'; -import FilterEditorsFactory from '../../services/FilterEditorsFactory'; - -export default Marionette.CollectionView.extend({ - className: 'dataset-options-editor dev-dataset-options-editor', - - childViewEvents: { - render: '__onChildRender', - destroy: '__onChildDestroy' - }, - - __onChildRender(fieldView) { - this.listenTo(fieldView.editor, 'change', () => this.trigger('change')); - }, - - __onChildDestroy(fieldView) { - this.stopListening(fieldView.editor, 'change'); - }, - - childView() { - return form.Field; - }, - - childViewOptions(model) { - const filtersConfigurationModel = this.getOption('filtersConfigurationModel'); - const editorOptions = FilterEditorsFactory.getFilterEditorOptions(filtersConfigurationModel, model, this.options.parentModel); - return { - schema: editorOptions, - ...editorOptions - }; - } -}); diff --git "a/src/list/views/\321\201onfigurationPanel/GridColumnConfigPanelView.js" "b/src/list/views/\321\201onfigurationPanel/GridColumnConfigPanelView.js" deleted file mode 100644 index 212e358a8..000000000 --- "a/src/list/views/\321\201onfigurationPanel/GridColumnConfigPanelView.js" +++ /dev/null @@ -1,52 +0,0 @@ -import ConfigPanelSortView from './ConfigPanelSortView'; -import ConfigPanelGroupView from './ConfigPanelGroupView'; -import ConfigPanelFilterView from './ConfigPanelFilterView'; -import ConfigPanelAggregationView from './ConfigPanelAggregationView'; - -export default function(options = {}) { - const TabView = Core.layout.TabLayout.extend({ - triggers: { - mouseleave: 'mouseleave', - mouseenter: 'mouseenter' - } - }); - return new TabView({ - bodyClass: 'dataset-configuration-panel', - tabs: [ - { - name: '', - description: Localizer.get('PROCESS.DATASET.FILTERTOOLTIPS.SORTING'), - id: 'sort', - view: new ConfigPanelSortView({ model: options.model }) - }, - { - name: '', - description: Localizer.get('PROCESS.DATASET.FILTERTOOLTIPS.FILTRATION'), - id: 'filter', - view: new ConfigPanelFilterView({ - filtersConfigurationModel: options.model.get('filtersConfigurationModel'), - columnType: options.model.get('columnType'), - model: options.model - }) - }, - { - name: '', - description: Localizer.get('PROCESS.DATASET.FILTERTOOLTIPS.GROUPING'), - id: 'group', - view: new ConfigPanelGroupView({ - level: options.model.get('level'), - model: options.model - }) - }, - { - name: '', - description: Localizer.get('PROCESS.DATASET.FILTERTOOLTIPS.AGGREGATION'), - id: 'Aggregation', - view: new ConfigPanelAggregationView({ - columnType: options.model.get('columnType'), - model: options.model - }) - } - ] - }); -}