config/default.js
const website = 'https://kalisio.com'
const serverPort = process.env.PORT || 8081
// Required to know webpack port so that in dev we can build correct URLs
const clientPort = process.env.CLIENT_PORT || 8080
const API_PREFIX = '/api'
let pwaName = 'kApp'
// If we build a specific staging instance
if (process.env.NODE_APP_INSTANCE === 'dev') {
pwaName += ' (dev)'
} else if (process.env.NODE_APP_INSTANCE === 'test') {
pwaName += ' (test)'
} else if (process.env.NODE_APP_INSTANCE === 'prod') {
// Nothing to do
} else {
// Otherwise we are on a developer machine
pwaName += ' (localhost)'
}
const LeftPane = {
content: [
{ component: 'account/KProfile', class: 'full-width' },
{ id: 'screen', icon: 'las la-tv', label: 'ScreenActivity.LABEL', renderer: 'item', route: { name: 'screen-activity' } },
{ id: 'layout', icon: 'las la-desktop', label: 'LayoutActivity.LABEL', renderer: 'item', route: { name: 'layout-activity', params: { mode: 'header-footer' } } },
{ id: 'miscellaneous', icon: 'las la-icons', label: 'MiscellaneousActivity.LABEL', renderer: 'item', route: { name: 'miscellaneous-activity' } },
{ id: 'document', icon: 'las la-icons', label: 'DocumentActivity.LABEL', renderer: 'item', route: { name: 'document-activity', params: { type: 'html' } } },
{ id: 'messages', icon: 'las la-comments', label: 'MessagesActivity.LABEL', renderer: 'item', route: { name: 'messages-activity' } },
{ id: 'collection', icon: 'las la-list', label: 'CollectionActivity.LABEL', renderer: 'item', route: { name: 'collection-activity', params: { page: 'list' } } },
{ id: 'board', icon: 'dashboard', label: 'KanbanActivity.LABEL', renderer: 'item', route: { name: 'board-activity' } },
{ id: 'chart', icon: 'las la-chart-pie', label: 'ChartActivity.LABEL', renderer: 'item', route: { name: 'chart-activity' } },
{ id: 'editor', icon: 'las la-edit', label: 'EditorActivity.LABEL', renderer: 'item', route: { name: 'editor-activity' } },
{ id: 'webpush', icon: 'las la-bell', label: 'WebPushActivity.LABEL', renderer: 'item', route: { name: 'webpush-activity' } },
{ id: 'contextual-help', icon: 'las la-question-circle', label: 'ContextualHelp.LABEL', handler: { name: 'launchTour', params: ['home'] }, renderer: 'item' },
{ component: 'QSeparator' },
{ id: 'about', icon: 'las la-info', label: 'ABOUT', renderer: 'item', dialog: { component: 'app/KAbout', title: 'ABOUT', okAction: 'CLOSE' } },
{ component: 'QSeparator' },
{ id: 'logout', icon: 'las la-sign-out-alt', label: 'LOGOUT', renderer: 'item', route: { name: 'logout' } }
],
opener: true,
visible: false
}
const vSeparator = { component: 'QSeparator', vertical: true }
const collectionActions = [
{
id: 'view-document',
icon: 'las la-glasses',
tooltip: 'Documents.VIEW',
scope: 'footer',
handler: 'viewItem'
},
{
id: 'edit-document',
icon: 'las la-edit',
tooltip: 'Documents.EDIT',
scope: 'header',
handler: { name: 'editItem', params: [] }
},
{
id: 'export-document',
icon: 'las la-download',
tooltip: 'Documents.EXPORT',
scope: 'footer',
handler: 'exportItem'
},
{
component: 'menu/KMenu',
id: 'overflow-menu',
scope: 'footer',
dropdownIcon: 'las la-ellipsis-v',
actionRenderer: 'item',
content: [{
id: 'delete-document',
icon: 'las la-trash',
label: 'Documents.DELETE',
handler: { name: 'removeItem', params: ['confirm'] }
}]
}
]
const collectionExport = {
component: 'tool/KExportTool',
service: 'documents',
formats: [
{ label: 'CSV', value: 'csv' },
{ label: 'JSON', value: 'json' }
],
transform: {
csv: {
mapping: {
'icon.name' : 'iconName',
'icon.color' : 'iconColor'
},
omit: [ '_id', 'icon' ]
},
json: {
omit: [ '_id' ]
}
},
gzip: false
}
const widgets = [
{
id: 'widget-1', label: 'Widget 1', icon: 'las la-restore-windows',
content: { component: 'layout/Widget'},
header: [{ id: 'title', component: 'KStamp', text: 'Widget 1', direction: 'horizontal' }]
},
{
id: 'widget-2', label: 'Widget 2', content: { component: 'layout/Widget'}
},
{
id: 'widget-3', label: 'Widget 3', content: { component: 'layout/Widget'}
},
{
id: 'widget-4', label: 'Widget 4', content: { component: 'layout/Widget'}
},
{
id: 'store-widget', label: 'Store', content: { component: 'KStore'}, scrollable: true
}
]
module.exports = {
pwaName,
flavor: process.env.NODE_APP_INSTANCE || 'dev',
version: require('../package.json').version,
buildNumber: process.env.BUILD_NUMBER,
apiPath: API_PREFIX,
apiJwt: 'kapp-jwt',
apiTimeout: 20000,
transport: 'websocket', // Could be 'http' or 'websocket',
appName: 'kApp',
// appLogo: 'kapp-logo.png',
appChangelog: 'https://kalisio.github.io/kApp/about/changelog.html',
publisher: 'Kalisio',
publisherContact: 'support@kalisio.com',
publisherWebsite: website,
locale: {
// If you'd like to force locale otherwise it is retrieved from browser
// default: 'en',
fallback: 'en'
},
logs: {
level: (process.env.NODE_ENV === 'development' ? 'debug' : 'info')
},
storage: {
useProxy: true
},
about: {
actions: [
{
id: 'platform-info',
icon: 'las la-desktop',
label: 'KAbout.PLATFORM_INFO',
stack: true,
dialog: {
title: 'KAbout.PLATFORM_INFO',
component: 'app/KPlatform',
okAction: 'CLOSE',
widthPolicy: 'narrow'
}
},
{
id: 'report-bug',
icon: 'las la-bug',
label: 'KAbout.BUG_REPORT',
stack: true,
component: 'action/KBugReportAction'
},
{
id: 'view-changelog',
icon: 'las la-history',
label: 'KAbout.VIEW_CHANGELOG',
stack: true,
url: 'https://kalisio.github.io/kApp/about/changelog.html'
}
]
},
screens: {
// header: 'screen/KScreenHeader',
// footer: 'screen/KScreenFooter',
// backgroundColor: '#FFF8ED',
// textColor: 'white',
actions: [{
id: 'terms-policies',
label: 'screen.TERMS_AND_POLICIES',
dialog: {
component: 'document/KDocument',
url: 'kapp-terms.md'
}
}],
login: {
actions: [
{ id: 'reset-password-link', label: 'KLoginScreen.FORGOT_YOUR_PASSWORD_LABEL', route: {name: 'send-reset-password' } },
{ id: 'register-link', label: 'KLoginScreen.DONT_HAVE_AN_ACCOUNT_LABEL', route: { name: 'register' } },
{ id: 'keycloak-link', label: 'screen.LOGIN_WITH_KEYCLOAK', route: { url: '/oauth/keycloak' } }
]
},
logout: {
actions: [
{ id: 'login-link', label: 'KLogoutScreen.LOG_IN_AGAIN_LABEL', route: { name: 'login' } }
]
},
register: {
actions: [
{ id: 'login-link', label: 'KRegisterScreen.ALREADY_HAVE_AN_ACCOUNT_LABEL', route: { name: 'login' } }
]
}
},
layout: {
page: {
visible: true
},
fab: {
visible: true
},
panes: {
left: { opener: true },
top: { opener: true, visible: true },
right: { opener: true },
bottom: { opener: true }
}
},
account: {
sections: [
{ title: 'KPasswordManager.TITLE', component: 'account/KPasswordManager', id: 'password-manager' },
{ title: 'KEmailManager.TITLE', component: 'account/KEmailManager', id: 'email-manager' },
{ title: 'KSubscriptionsManager.TITLE', component: 'account/KSubscriptionsManager', id: 'subscriptions-manager',
actions: [
{ id: 'unsubscribe', tooltip: 'KSubscriptionCard.UNSUBSCRIBE_LABEL', icon: 'phonelink_erase', handler: 'unsubscribe' }
]
}
],
deletable: true
},
screenActivity: {
panes: {
left: LeftPane
}
},
layoutActivity: {
header: {
content: {
'header-footer': [{ component: 'layout/Header'}]
}
},
footer: {
content: {
'header-footer': [{ component: 'layout/Footer'}]
}
},
panes: {
left: LeftPane,
top: {
content: {
'header-footer': [
{ id: 'page', label: 'Header/Footer', color: 'primary', disabled: true },
{ id: 'panes', label: 'Panes', route: { name: 'layout-activity', params: { mode: 'panes' } } },
{ id: 'windows', label: 'Windows', route: { name: 'layout-activity', params: { mode: 'windows' } } },
{ id: 'fab', label: 'Fab', route: { name: 'layout-activity', params: { mode: 'fab' } } },
],
panes: [
{ id: 'page', label: 'Header/Footer', route: { name: 'layout-activity', params: { mode: 'header-footer' } } },
{ id: 'panes', label: 'Panes', route: { name: 'layout-activity', params: { mode: 'panes' } } },
{ id: 'windows', label: 'Windows', route: { name: 'layout-activity', params: { mode: 'windows' } } },
{ id: 'fab', label: 'Fab', route: { name: 'layout-activity', params: { mode: 'fab' } } },
],
windows: [
{ id: 'page', label: 'Header/Footer', route: { name: 'layout-activity', params: { mode: 'header-footer' } } },
{ id: 'panes', label: 'Panes', route: { name: 'layout-activity', params: { mode: 'panes' } } },
{ id: 'windows', label: 'Windows', color: 'primary', disabled: true },
{ id: 'fab', label: 'Fab', route: { name: 'layout-activity', params: { mode: 'fab' } } },
],
fab: [
{ id: 'page', label: 'Header/Footer', route: { name: 'layout-activity', params: { mode: 'header-footer' } } },
{ id: 'panes', label: 'Panes', route: { name: 'layout-activity', params: { mode: 'panes' } } },
{ id: 'windows', label: 'Windows', route: { name: 'layout-activity', params: { mode: 'windows' } } },
{ id: 'fab', label: 'Fab', color: 'primary', disabled: true }
]
}
},
right: {
content: [{ component: 'layout/RightPane' }],
visible: false
},
bottom: {
content: [{ component: 'layout/BottomPane' }],
visible: false
}
},
page: {
content: {
'header-footer': [{ component: 'layout/Layout', mode: 'page' }],
panes: [{ component: 'layout/Layout', mode: 'panes' }],
windows: [{ component: 'layout/Layout', mode: 'windows' }],
fab: [{ component: 'layout/Layout', mode: 'fab' }]
}
},
fab: {
content: {
'header-footer': [
{ id: 'page', label: 'Page', icon: 'las la-stream', handler: { name: 'setMode', params: ['page'] } },
{ id: 'panes', label: 'Panes', icon: 'las la-window-minimize', handler: { name: 'setMode', params: ['panes'] } },
{ id: 'windows', label: 'Windows', icon: 'las la-window-restore', handler: { name: 'setMode', params: ['windows'] } },
{ id: 'fab', label: 'Fab', icon: 'las la-window-restore', handler: { name: 'setMode', params: ['fab'] } }
],
fab: [
{ id: 'page', label: 'Page', icon: 'las la-stream', handler: { name: 'setMode', params: ['page'] } },
{ id: 'panes', label: 'Panes', icon: 'las la-window-minimize', handler: { name: 'setMode', params: ['panes'] } },
{ id: 'windows', label: 'Windows', icon: 'las la-window-restore', handler: { name: 'setMode', params: ['windows'] } },
{ id: 'fab', label: 'Fab', icon: 'las la-window-restore', handler: { name: 'setMode', params: ['fab'] } }
]
}
},
windows: {
left: { content: [widgets[0], widgets[4]], current: 'widget-1' },
right: { content: [widgets[1]], current: 'widget-2' },
top: { content: [widgets[2]], current: 'widget-3'},
bottom: { content: [widgets[3]], current: 'widget-4' }
}
},
miscellaneousActivity: {
panes: {
left: LeftPane,
top: {
content: [
{ id: 'layout', icon: 'las la-icons', label: 'MiscellaneousActivity.LABEL', color: 'primary', disabled: true }
]
}
}
},
documentActivity: {
panes: {
left: LeftPane,
top: {
content: {
html: [
{ id: 'html', label: 'Html', color: 'primary', disabled: true },
{ id: 'md', label: 'Markdown', color: 'primary', route: { name: 'document-activity', params: { type: 'md' } } },
{ id: 'pdf', label: 'Pdf', color: 'primary', route: { name: 'document-activity', params: { type: 'pdf' } } },
{ id: 'png', label: 'Png', color: 'primary', route: { name: 'document-activity', params: { type: 'png' } } }
],
md: [
{ id: 'html', label: 'Html', color: 'primary', route: { name: 'document-activity', params: { type: 'html' } } },
{ id: 'md', label: 'Markdown', color: 'primary', disabled: true },
{ id: 'pdf', label: 'Pdf', color: 'primary', route: { name: 'document-activity', params: { type: 'pdf' } } },
{ id: 'png', label: 'Png', color: 'primary', route: { name: 'document-activity', params: { type: 'png' } } }
],
pdf: [
{ id: 'html', label: 'Html', color: 'primary', route: { name: 'document-activity', params: { type: 'html' } } },
{ id: 'md', label: 'Markdown', color: 'primary', route: { name: 'document-activity', params: { type: 'md' } } },
{ id: 'pdf', label: 'Pdf', color: 'primary', disabled: true },
{ id: 'png', label: 'Png', color: 'primary', route: { name: 'document-activity', params: { type: 'png' } } }
],
png: [
{ id: 'html', label: 'Html', color: 'primary', route: { name: 'document-activity', params: { type: 'html' } } },
{ id: 'md', label: 'Markdown', color: 'primary', route: { name: 'document-activity', params: { type: 'md' } } },
{ id: 'pdf', label: 'Pdf', color: 'primary', route: { name: 'document-activity', params: { type: 'pdf' } } },
{ id: 'png', label: 'Png', color: 'primary', disabled: true }
]
}
}
},
page: {
content: {
html: [{ component: 'document/KDocument', url: 'sample.html', localize: true }],
md: [{ component: 'document/KDocument', url: 'sample.md', localize: true }],
pdf: [{ component: 'document/KDocument', url: 'sample.pdf', localize: true }],
png: [{ component: 'document/KDocument', url: 'sample.png', localize: true }]
}
}
},
messagesActivity: {
panes: {
left: LeftPane,
top: {
content: [
{ component: 'collection/KFilter', label: 'MessagesActivity.SEARCH', fields: ['body', 'author'], style: 'width: 50vw; min-width: 180px; max-width: 500px;' },
]
},
bottom: {
content: [
{ component: 'messages/Composer', class: 'fit' }
],
sizes: { xs: 100, sm: 600, md: 600, lg: 600, xl: 600 },
visible: true,
opener: false
}
},
messages: {
information: { label: 'MessagesActivity.INFORMATION', color: 'grey-7', textColor: 'black', icon: 'las la-info' },
warning: { label: 'MessagesActivity.WARNING', color: 'warning', textColor: 'black', icon: 'las la-exclamation' },
alert: { label: 'MessagesActivity.ALERT', color: 'negative', textColor: 'white', icon: 'las la-skull-crossbones' }
}
},
collectionActivity: {
panes: {
left: LeftPane,
top: {
content: {
list: [
{ id: 'list', icon: 'las la-list', label: 'CollectionActivity.LIST', color: 'primary', disabled: true },
{ id: 'grid', icon: 'view_module', tooltip: 'CollectionActivity.GRID', route: { name: 'collection-activity', params: { page: 'grid' } } },
{ id: 'table', icon: 'las la-table', tooltip: 'CollectionActivity.TABLE', route: { name: 'collection-activity', params: { page: 'table' } } },
vSeparator,
{ id: 'filter', icon: 'las la-search', tooltip: 'CollectionActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } },
{ component: 'collection/KSorter' },
collectionExport
],
grid: [
{ id: 'list', icon: 'las la-list', tooltip: 'CollectionActivity.LIST', route: { name: 'collection-activity', params: { page: 'list' } } },
{ id: 'grid', icon: 'view_module', label: 'CollectionActivity.GRID', color: 'primary', disabled: true },
{ id: 'table', icon: 'las la-table', tooltip: 'CollectionActivity.TABLE', route: { name: 'collection-activity', params: { page: 'table' } } },
vSeparator,
{ id: 'filter', icon: 'las la-search', tooltip: 'CollectionActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } },
{ component: 'collection/KSorter' },
collectionExport
],
table: [
{ id: 'list', icon: 'las la-list', tooltip: 'CollectionActivity.LIST', route: { name: 'collection-activity', params: { page: 'list' } } },
{ id: 'grid', icon: 'view_module', tooltip: 'CollectionActivity.GRID', route: { name: 'collection-activity', params: { page: 'grid' } } },
{ id: 'table', icon: 'las la-table', label: 'CollectionActivity.TABLE', color: 'primary', disabled: true },
vSeparator,
{ id: 'filter', icon: 'las la-search', tooltip: 'CollectionActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } },
{ component: 'collection/KSorter' },
collectionExport
],
filter: [
{ id: 'back', icon: 'las la-arrow-left', handler: { name: 'restoreTopPaneMode' } },
{ component: 'QSeparator', vertical: true, color: 'lightgrey' },
{ component: 'collection/KFilter', size: '1rem' }
]
},
mode: 'list'
}
},
page: {
content: {
list: [{
component: 'collection/KGrid',
service: 'documents',
renderer: {
component: 'collection/KItem',
actions: collectionActions,
class: 'col-12'
},
appendItems: true,
class: 'fit'
}],
grid: [{
component: 'collection/KGrid',
service: 'documents',
renderer: {
component: 'collection/KCard',
actions: collectionActions
},
class: 'fit'
}],
table: [{
component: 'collection/KTable',
service: 'documents',
itemActions: collectionActions,
nbItemsPerPage: 12,
selection: 'multiple',
class: 'fit'
}]
},
mode: 'list'
},
fab: {
content: [
{ id: 'create-document', icon: 'las la-plus', route: { name: 'create-document', params: { service: 'documents' } } }
]
}
},
boardActivity: {
panes: {
left: LeftPane,
top: {
content: {
default: [
{ id: 'table', icon: 'dashboard', label: 'KanbanActivity.LABEL', color: 'primary', disabled: true },
{ id: 'filter', icon: 'las la-search', tooltip: 'KanbanActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } }
],
filter: [
{ id: 'back', icon: 'las la-arrow-left', handler: { name: 'setTopPaneMode', params: ['default'] } },
{ component: 'QSeparator', vertical: true, color: 'lightgrey' },
{ component: 'collection/KFilter', size: '1rem' }
]
},
mode: 'default'
}
},
categories: [
{ name: 'sain' },
{ name: 'malade' },
{ name: 'déclin' }
],
categoryField: 'etat_sani'
},
chartActivity: {
panes: {
left: LeftPane,
top: {
content: {
pie: [
{ id: 'pie', icon: 'las la-chart-pie', label: 'ChartActivity.PIE', color: 'primary', disabled: true },
{ id: 'bar', icon: 'las la-chart-bar', label: 'ChartActivity.BAR', handler: { name: 'setTopPaneMode', params: ['bar'] } },
{ id: 'line', icon: 'las la-chart-line', label: 'ChartActivity.LINE', handler: { name: 'setTopPaneMode', params: ['line'] } }
],
bar: [
{ id: 'pie', icon: 'las la-chart-pie', label: 'ChartActivity.PIE', handler: { name: 'setTopPaneMode', params: ['pie'] } },
{ id: 'bar', icon: 'las la-chart-bar', label: 'ChartActivity.BAR', color: 'primary', disabled: true },
{ id: 'line', icon: 'las la-chart-line', label: 'ChartActivity.LINE', handler: { name: 'setTopPaneMode', params: ['line'] } }
],
line: [
{ id: 'pie', icon: 'las la-chart-pie', label: 'ChartActivity.PIE', handler: { name: 'setTopPaneMode', params: ['pie'] } },
{ id: 'bar', icon: 'las la-chart-bar', label: 'ChartActivity.BAR', handler: { name: 'setTopPaneMode', params: ['bar'] } },
{ id: 'line', icon: 'las la-chart-line', label: 'ChartActivity.LINE', color: 'primary', disabled: true }
]
},
mode: 'pie'
}
}
},
editorActivity: {
panes: {
left: LeftPane,
top: {
content: [{ id: 'editor', icon: 'las la-edit', label: 'EditorActivity.LABEL', color: 'primary', disabled: true }]
}
},
fab: {
actions: [
{ id: 'editor', icon: 'las la-edit', label: 'EditorActivity.EDIT', route: { name: 'edit-object', params: { service: 'custom', objectId: '0' } } },
{ id: 'viewer', icon: 'las la-glasses', label: 'EditorActivity.VIEW', route: { name: 'view-object', params: { service: 'custom', objectId: '0' } } }
]
}
},
webpushActivity: {
panes: {
left: LeftPane
}
},
routes: require('../src/router/routes')
}