jsreport-studio
Version:
jsreport templates editor and designer
71 lines (51 loc) • 1.7 kB
JavaScript
import { selectors } from '../entities'
import { editorComponents } from '../../lib/configuration.js'
export const getTabWithEntities = (state) => state.editor.tabs.map((t) => ({
entity: t.type === 'entity' ? selectors.getById(state, t._id) : null,
tab: t
}))
export const getActiveTab = (state) => state.editor.activeTabKey ? state.editor.tabs.filter((t) => t.key === state.editor.activeTabKey)[0] : null
export const getActiveEntity = (state) => {
if (!state.editor.activeTabKey) {
return null
}
const tab = getActiveTab(state)
if (!tab) {
return null
}
return tab.type === 'entity' ? selectors.getById(state, tab._id, false) : null
}
export const getActiveTabWithEntity = (state) => {
const tab = getActiveTab(state)
if (!tab || tab.type !== 'entity') {
return tab
}
return {
tab: tab,
entity: selectors.getById(state, tab._id)
}
}
export const getLastActiveTemplate = (state) => {
if (!state.editor.lastActiveTemplateKey) {
return null
}
return selectors.getById(state, state.editor.lastActiveTemplateKey)
}
export const canRun = (state) => {
return !!state.editor.lastActiveTemplateKey
}
export const canRemove = (state) => {
const entity = getActiveEntity(state)
return !!entity
}
export const canSave = (state) => {
const entity = getActiveEntity(state)
return entity ? !!entity.__isDirty : false
}
export const canSaveAll = (state) => {
return getTabWithEntities(state).filter((t) => t.entity && t.entity.__isDirty).length > 0
}
export const canReformat = (state) => {
const tab = getActiveTab(state)
return (tab && editorComponents[tab.editorComponentKey || tab.entitySet].reformat) ? true : false
}