nw-skeleton

Source: config/appWrapperConfig.js

/**
 * @fileOverview config for app wrapper file
 * @author Dino Ivankov <dinoivankov@gmail.com>
 * @version 1.2.0
 */

/**
 * MainConfigDebug Object that contains main config debug data
 * @typedef  {Object}    MainConfigDebug
 *
 * @property {Boolean}   enabled            Flag to enable or disable debug for main script
 * @property {Boolean}   debugToWindow      Flag to enable or disable passing debug messages to main window
 * @property {Integer}   debugLevel         Minimum debug level for logging
 * @property {Boolean}   displayTimestamps  Flag to enable or disable timestamps with log messages
 * @property {Boolean}   debugToFile        Flag to enable or disable writing log to file
 * @property {Boolean}   saveStacksToFile   Flag to enable or disable writing stacks to log file
 * @property {Boolean}   debugToFileAppend  Flag to indicate whether to append or overwrite log file
 * @property {String}    debugLogFilename   Path to main debug log file
 */

/**
 * MainConfig Object that contains current window state variables
 * @typedef  {Object}    MainConfig
 *
 * @property {MainConfigDebug}   debug      Main config debug data
 */

/**
 * AppStorageConfig Object that contains app storage configuration
 * @typedef  {Object}    AppStorageConfig
 *
 * @property {string}   type      Storage type ('localStorage' or 'filesystem')
 * @property {string}   root      Filesystem storage root dir name (under appConfig.tmpDataDir)
 * @property {Boolean}  minify    Force minified json saving
 */


/**
 * AppWrapperConfig Object that contains base app config
 * @typedef  {Object}    AppWrapperConfig
 *
 * @property {MainConfig}   main           Main script config variables
 */

/**
 * @type {AppWrapperConfig}
 * @memberOf appWrapper
 * @name appWrapperConfig
 *
 * @todo Complete typedefs
 */
exports.config = {
    main : {
        debug: {
            enabled: true,
            rotateLogs: true,
            debugToWindow: false,
            debugLevel: 2,
            displayTimestamps: true,
            debugToFile: true,
            saveStacksToFile: true,
            debugToFileAppend: false,
            debugLogFilename: 'main-debug',
        },
    },
    wrapper : {
        appFile: './node_modules/nw-skeleton/app-wrapper/js/app',

        themeBaseDir: './node_modules/nw-skeleton/app-wrapper/css/themes',

        componentCodeRegex: /\.js$/,
        componentDirectories: {
            component: ['./node_modules/nw-skeleton/app-wrapper/components/app/'],
            globalComponent: ['./node_modules/nw-skeleton/app-wrapper/components/global/', './node_modules/nw-skeleton/app-wrapper/components/form'],
            modalComponent: ['./node_modules/nw-skeleton/app-wrapper/components/modal/']
        },

        systemHelperDirectories: ['./node_modules/nw-skeleton/app-wrapper/js/helper/system/'],
        helperDirectories: ['./node_modules/nw-skeleton/app-wrapper/js/helper/'],

        mixinRoot: './node_modules/nw-skeleton/app-wrapper/js/mixin/',
        mixinExtensionRegex: /\.js$/,

        directiveRoot: './node_modules/nw-skeleton/app-wrapper/js/directive/',
        directiveExtensionRegex: /\.js$/,

        filterRoot: './node_modules/nw-skeleton/app-wrapper/js/filter/',
        filterExtensionRegex: /\.js$/,

        translationExtensionRegex: /\.i18n\.js$/,
        translationsRoot: 'translations',

        componentMapping: {
            'app-window' : {
                name: 'app-window',
                components: {
                    'app-header': {
                        name: 'app-header',
                        components: {
                            'window-controls': {
                                name: 'window-controls',
                                components: {
                                    'theme-select': {
                                        name: 'theme-select'
                                    },
                                    'language-select': {
                                        name: 'language-select'
                                    }
                                }
                            },
                        }
                    },
                    'app-main': {
                        name: 'app-main'
                    },
                    'app-footer': {
                        name: 'app-footer',
                    }
                }
            }
        },
    },

    minPauseDuration: 10,
    shortPauseDuration: 100,
    mediumPauseDuration: 250,
    longPauseDuration: 700,
    longerPauseDuration: 1000,

    mindOsUsers: true,

    cancelOperationTimeout: 30000,

    appStorage: {
        type: 'localStorage',
        root: 'storageData',
        minify: false,
    },

    appConfig: {
        appFile: null,
        appSubFiles: [],
        mainComponent: 'app-main',
        tmpDataDir: './var/data',
        logDir: './var/log',
        dataDir: './data',
        showInitializationStatus: true,
        showInitializationProgress: true,

        allowFullscreen: true,
        hideFullscreenHeader: true,
        hideFullscreenFooter: true,
        windowConfig: {
            left: null,
            top: null,
            width: null,
            height: null,
            fullscreen: false,
        },

        themeBaseDir: './app/css/themes',

        cssCompiledFile: 'css/dist.css',
        initCssFiles: [
            '/node_modules/nw-skeleton/app-wrapper/css/config.css',
        ],
        cssFiles: [
            '/node_modules/nw-skeleton/app-wrapper/css/fonts.css',
            '/node_modules/nw-skeleton/app-wrapper/css/layout.css',
            '/node_modules/nw-skeleton/app-wrapper/css/style.css',
            '/node_modules/nw-skeleton/app-wrapper/css/transitions.css'
        ],
        overrideCssFiles: [],

        initJsFiles: [],
        jsFiles: [
            '/node_modules/nw-skeleton/app-wrapper/js/lib/ext/vue.js'
        ],

        debugCssFiles: [
            '/node_modules/nw-skeleton/app-wrapper/css/debug.css'
        ],

        debugJsFiles: [],

        componentMapping: {},
        componentModules: {
            component: [],
            globalComponent: [],
            modalComponent: []
        },

        mixinRoot: './app/js/mixin/',

        directiveRoot: './app/js/directive/',
        directiveExtensionRegex: /\.js$/,

        disableRightClick: true,

        hasAppMenu: false,
        menuData: {
            editMenu: {
                menuItem: {
                    label: 'Edit',
                    method: 'noop'
                },
                children: [
                    // {
                    //     menuItem: {
                    //         label: 'Undo',
                    //         method: 'helpers.clipboardHelper.undo',
                    //         shortcut: {
                    //             key: 'z',
                    //             modifiers: {
                    //                 ctrl: true
                    //             }
                    //         }
                    //     }
                    // },
                    // {
                    //     menuItem: {
                    //         label: 'Redo',
                    //         method: 'helpers.clipboardHelper.redo',
                    //         shortcut: {
                    //             key: 'z',
                    //             modifiers: {
                    //                 ctrl: true,
                    //                 shift: true
                    //             }
                    //         }
                    //     }
                    // },
                    {
                        menuItem: {
                            type: 'separator'
                        },
                        children: []
                    },
                    {
                        menuItem: {
                            label: 'Cut',
                            method: 'helpers.clipboardHelper.cut',
                            shortcut: {
                                key: 'x',
                                modifiers: {
                                    ctrl: true
                                }
                            }
                        }
                    },
                    {
                        menuItem: {
                            label: 'Copy',
                            method: 'helpers.clipboardHelper.copy',
                            shortcut: {
                                key: 'c',
                                modifiers: {
                                    ctrl: true
                                }
                            }
                        }
                    },
                    {
                        menuItem: {
                            label: 'Paste',
                            method: 'helpers.clipboardHelper.paste',
                            shortcut: {
                                key: 'v',
                                modifiers: {
                                    ctrl: true
                                }
                            }
                        }
                    },
                    {
                        menuItem: {
                            label: 'Select all',
                            method: 'helpers.clipboardHelper.selectAll',
                            shortcut: {
                                key: 'a',
                                modifiers: {
                                    ctrl: true
                                }
                            }
                        }
                    }
                ]
            }
        },
        hasTrayIcon: false,
        trayData: {}
    },

    configData: {
        uneditableConfig: [],
        editableConfig: [],
        noReloadConfig: [],
        reloadConfig: [],
        ignoreUserConfig: [
            'appConfig.menuData',
            'appConfig.componentMapping',
            'appConfig.appSubFiles',
            'userMessages.forceUserMessages',
            'debug.forceDebug',
            'appInfo',
            'currentLanguage',
            'currentLanguageName',
            'currentLocale',
        ],
        defaultVar: {
            editable: true,
            reload: true,
            control: 'text'
        },
        vars: {
            app: {
                editable: false,
                reload: true
            },
            appConfig: {
                editable: true,
                reload: false
            },
            logDir: {
                editable: false,
                reload: true
            },
            varDir: {
                editable: false,
                reload: true
            },
            'debug.debugMessagesFilename': {
                editable: false,
                reload: true
            },
            'userMessages.userMessagesFilename': {
                editable: false,
                reload: true
            },
            'userMessages.userMessageLevel': {
                editable: true,
                reload: false,
                type: 'string',
                control: 'select',
                controlData: {
                    items: {
                        1: 'debug',
                        2: 'info',
                        3: 'warning',
                        4: 'error'
                    }
                }
            },
            'debug.debugLevel': {
                editable: true,
                reload: false,
                type: 'string',
                control: 'select',
                controlData: {
                    items: {
                        1: 'debug',
                        2: 'info',
                        3: 'warning',
                        4: 'error'
                    }
                }
            },
            'debug.enabled': {
                editable: true,
                reload: false
            },
            'debug.hideDebug': {
                editable: true,
                reload: false
            },
            'logger.messageLevels': {
                editable: false,
                reload: true
            },
            windowWidth: {
                editable: false,
                reload: false
            },
            windowHeight: {
                editable: false,
                reload: false
            },
            componentMapping: {
                editable: false,
                reload: true
            },
            theme: {
                editable: true,
                reload: false
            },
            currentLanguage: {
                editable: true,
                reload: false,
                type: 'string',
                control: 'select',
                controlData: {
                    items: {
                        'en-US': 'English',
                        'sr-Latn-RS': 'Srpski',
                        'sr-Cyrl-RS': 'Српски',
                    }
                }
            },
            currentLocale: {
                editable: true,
                reload: false,
                type: 'string',
                control: 'select',
                controlData: {
                    items: {
                        'en-US': 'English',
                        'sr-Latn': 'Srpski',
                        'sr-Cyrl': 'Српски',
                    }
                }
            },
            'debug.messagesExpanded': {
                editable: true,
                reload: false
            },
            'userMessages.messagesExpanded': {
                editable: true,
                reload: false
            },
            'debug.displayTimestamps': {
                editable: true,
                reload: false
            },
            'userMessages.displayTimestamps': {
                editable: true,
                reload: false
            },
            'debug.forceDebug': {
                editable: false,
                reload: true
            },
            'userMessages.forceUserMessages': {
                editable: false,
                reload: false
            },
            compileCss: {
                editable: true,
                reload: false
            },
            liveCss: {
                editable: true,
                reload: false
            },
        }
    },

    varDir: './var',
    logDir: './var/log',

    currentLanguageName: 'English',
    currentLanguage: 'en-US',
    currentLocale: 'en',
    allowLanguageChange: true,
    autoAddLabels: true,

    themeModules: [],
    theme: 'dark',
    allowThemeChange: true,

    liveCss: false,
    compileCss: false,

    appNotifications: {
        userMessageDuration: 3000,
        duration: 5000,
        defaultIcon: 'node_modules/nw-skeleton/app-wrapper/images/tray-icon.png',
        defaultBadge: 'node_modules/nw-skeleton/app-wrapper/images/logo.png',
        defaultImage: 'node_modules/nw-skeleton/app-wrapper/images/logo.png'
    },
    logger: {
        messageLevels: {
            'debug': 1,
            'info': 2,
            'warning': 3,
            'error': 4
        },
    },
    userMessages: {
        rotateLogs: true,
        animateMessages: true,
        hideUserMessages: false,
        userMessageLevel: 3,
        maxVisibleUserMessages: 200,
        maxUserMessages: 5000,
        userMessagesToFile: true,
        saveStacksToFile: true,
        userMessagesToFileAppend: false,
        userMessagesFilename: 'user-messages',
        messagesExpanded: false,
        displayTimestamps: true,
        forceUserMessages: {
            AppConfig: false,
            AppNotificationsHelper: false,
            AppOperationHelper: false,
            AppTemplates: false,
            AppTranslations: false,
            AppWrapper: false,
            ClipboardHelper: false,
            ComponentHelper: false,
            DebugHelper: false,
            FileManager: false,
            FormatHelper: false,
            HtmlHelper: false,
            KeyboardHelper: false,
            MenuHelper: false,
            ModalHelper: false,
            StaticFilesHelper: false,
            StorageHelper: false,
            StyleHelper: false,
            ThemeHelper: false,
            UserDataHelper: false,
            UserMessageHelper: false,
            UtilHelper: false,
            WindowManager: false,
            WrapperApp: false
        }
    },
    debug: {
        animateMessages: true,
        hideDebug: false,
        enabled: true,
        rotateLogs: true,
        usage: false,
        usageInterval: 500,
        usageGraphs: false,
        usageHistoryCount: 1000,
        debugToFile: true,
        saveStacksToFile: true,
        debugToFileAppend: false,
        debugMessagesFilename: 'debug-messages',
        messagesExpanded: false,
        displayTimestamps: true,
        devTools: true,
        alwaysTrace: false,
        debugLevel: 3,
        maxVisibleDebugMessages: 200,
        maxDebugMessages: 5000,
        debugGroupsCollapsed: false,
        passToMain: false,
        debugWindowFile: './node_modules/nw-skeleton/app-wrapper/template/debug.html',
        forceDebug: {
            AppConfig: false,
            AppNotificationsHelper: false,
            AppOperationHelper: false,
            AppTemplates: false,
            AppTranslations: false,
            AppWrapper: false,
            ClipboardHelper: false,
            ComponentHelper: false,
            DebugHelper: false,
            FileManager: false,
            FormatHelper: false,
            HtmlHelper: false,
            KeyboardHelper: false,
            MenuHelper: false,
            ModalHelper: false,
            StaticFilesHelper: false,
            StorageHelper: false,
            StyleHelper: false,
            ThemeHelper: false,
            UserDataHelper: false,
            UserMessageHelper: false,
            UtilHelper: false,
            WindowManager: false,
            WrapperApp: false
        },
    },

    windowCloseTimeoutDuration: 15000,
    windowReloadTimeoutDuration: 15000,

    windowWidth: null,
    windowHeight: null,

};