RSS Git Download  Clone
Raw Blame History 8kB 251 lines
// angular
global.angular = require('angular');

require('angular-aria');
require('angular-messages');
require('angular-animate');
require('angular-cookies');

require('@uirouter/angularjs')
require('angular-material');1

require('angular-tree-control')
require('angular-tree-control/context-menu')

p3xr.ng =  angular.module('p3xr-redis-ui', [
    'ngCookies',
    'ngAnimate',
    'ngAria',
    'ngMessages',
    'ngMaterial',
    'ui.router',
    'treeControl',
] );



require('./injector')


p3xr.ng.config(($qProvider, $locationProvider, $urlRouterProvider, $stateProvider, p3xrThemeProvider) => {

    $qProvider.errorOnUnhandledRejections(false);
    $locationProvider.html5Mode(true);
//  $urlRouterProvider.otherwise('/');
//  $httpProvider.interceptors.push('ngivrHttpInterceptor');
    p3xrThemeProvider.start();
    const routes = require('./routes')

    $urlRouterProvider.otherwise('/main');

    routes($stateProvider);

})

p3xr.ng.run(($rootScope, p3xrSocket, p3xrTheme, $mdMedia, $state, $timeout, $cookies, p3xrRedisParser) => {

    $rootScope.p3xr = p3xr;
    $rootScope.$mdMedia = $mdMedia;

    $rootScope.hasConnected = () => {
        if (Object.keys(p3xr.state.redisConnections).length === 0) {
            return false
        }
        return true;
    }

    $rootScope.locationReload = () => {
        $state.go('main')
        location.reload()
    }


    let treeDivider
    Object.defineProperty($rootScope.p3xr.settings, 'redisTreeDivider', {
        get: () => {
            treeDivider = $cookies.get(p3xr.settings.tree.cookieName)
            if (treeDivider === undefined) {
                treeDivider = p3xr.settings.tree.defaultDivider
            }
            return treeDivider
        },
        set: (value) => {
            treeDivider = value
            treeDivider = $cookies.put(p3xr.settings.tree.cookieName, value, {
                expires: p3xr.settings.cookieExpiry,
            })
        }
    })

    let keysSort
    Object.defineProperty($rootScope.p3xr.settings, 'keysSort', {
        get: () => {
            keysSort = $cookies.get(p3xr.settings.keySortInfo.cookieName)
            if (keysSort === undefined) {
                keysSort = p3xr.settings.keySortInfo.default
            } else if (keysSort === 'true') {
                keysSort = true
            } else if (keysSort === 'false') {
                keysSort = false
            }
            return keysSort
        },
        set: (value) => {
            keysSort = value
            keysSort = $cookies.put(p3xr.settings.keySortInfo.cookieName, value, {
                expires: p3xr.settings.cookieExpiry,
            })
        }
    })


    let searchClientSide
    Object.defineProperty($rootScope.p3xr.settings, 'searchClientSide', {
        get: () => {
            searchClientSide = $cookies.get(p3xr.settings.searchInfoClientSide.cookieName)
            if (searchClientSide === undefined) {
                searchClientSide = p3xr.settings.searchInfoClientSide.default
            } else if (searchClientSide === 'true') {
                searchClientSide = true
            } else if (searchClientSide === 'false') {
                searchClientSide = false
            }
            return searchClientSide
        },
        set: (value) => {
            searchClientSide = value
            searchClientSide = $cookies.put(p3xr.settings.searchInfoClientSide.cookieName, value, {
                expires: p3xr.settings.cookieExpiry,
            })
        }
    })



    let searchStartsWith
    Object.defineProperty($rootScope.p3xr.settings, 'searchStartsWith', {
        get: () => {
            searchStartsWith = $cookies.get(p3xr.settings.searchInfoStartsWith.cookieName)
            if (searchStartsWith === undefined) {
                searchStartsWith = p3xr.settings.searchInfoStartsWith.default
            } else if (searchStartsWith === 'true') {
                searchStartsWith = true
            } else if (searchStartsWith === 'false') {
                searchStartsWith = false
            }
            return searchStartsWith
        },
        set: (value) => {
            searchStartsWith = value
            searchStartsWith = $cookies.put(p3xr.settings.searchInfoStartsWith.cookieName, value, {
                expires: p3xr.settings.cookieExpiry,
            })
        }
    })

    $rootScope.keysTreeRendered = []
    let keysTree
    Object.defineProperty($rootScope, 'keysTree', {
        get: () => {
            if (JSON.stringify(keysTree) !== JSON.stringify(p3xr.state.keys) || $rootScope.p3xr.state.redisChanged === true ) {
                $rootScope.p3xr.state.redisChanged = false
                $rootScope.keysTreeRendered =  p3xrRedisParser.keysToTreeControl({
                    keys: p3xr.state.keys,
                })
                keysTree = p3xr.state.keys
            }
            return $rootScope.keysTreeRendered
        },
        set: (value) => {
            keysTree = value
        }
    })


    let expandedNodes = []
    Object.defineProperty($rootScope, 'expandedNodes', {
        get: () => {
            //console.warn('expandedNodes get', expandedNodes)
            return expandedNodes
        },
        set: (value) =>  {
            //console.warn('expandedNodes set', expandedNodes)
            expandedNodes = value
        }
    })
    $rootScope.savedExpandedNodes = []

    let page = 1
    Object.defineProperty($rootScope.p3xr.state, 'page', {
        get: () => {
            return page
        },
        set: (value) => {
            page = parseInt(value)
        }
    })

    Object.defineProperty($rootScope.p3xr.state, 'keys', {
        get: () => {
            let keysRaw = $rootScope.p3xr.state.keysRaw.slice()
            if ($rootScope.p3xr.settings.searchClientSide && typeof ($rootScope.p3xr.state.search) === 'string' && $rootScope.p3xr.state.search.length > 0) {
                //console.log($rootScope.p3xr.settings.searchStartsWith)
                if ($rootScope.p3xr.settings.searchStartsWith) {
                    //console.log('startswith')
                    keysRaw = keysRaw.filter(keyRaw => {
                        return keyRaw.startsWith($rootScope.p3xr.state.search)
                    })
                 } else {
                    //console.log('includes')
                    keysRaw = keysRaw.filter(keyRaw => {
                        return keyRaw.includes($rootScope.p3xr.state.search)
                    })
                }
            }
            if (keysRaw <= $rootScope.p3xr.settings.pageCount) {
                return keysRaw
            } else {
                //console.log('new scope change',  ($rootScope.p3xr.state.page -1) * $rootScope.p3xr.settings.pageCount, $rootScope.p3xr.settings.pageCount)
                const start = ($rootScope.p3xr.state.page -1) * $rootScope.p3xr.settings.pageCount
                const keys = keysRaw.slice(start, start + $rootScope.p3xr.settings.pageCount)
                return keys
            }
        }
    })

    Object.defineProperty($rootScope.p3xr.state, 'pages', {
        get: () => {
            const pages = Math.ceil($rootScope.p3xr.state.keysRaw.length / $rootScope.p3xr.settings.pageCount)
            return pages
        }
    })

    let pageCount
    Object.defineProperty($rootScope.p3xr.settings, 'pageCount', {
        get: () => {
            pageCount = $cookies.get(p3xr.settings.paging.cookieName)
            if (pageCount === undefined) {
                pageCount = p3xr.settings.paging.default
            } else {
                pageCount = parseInt(pageCount)
            }
            return pageCount
        },
        set: (value) => {
            pageCount = value
            pageCount = $cookies.put(p3xr.settings.paging.cookieName, value, {
                expires: p3xr.settings.cookieExpiry,
            })
        }
    })

    //console.warn('p3xrTheme', p3xrTheme)
    p3xrTheme.start()
    console.info('P3X Redis UI ran')
})

angular.element(document).ready(() => {
    const bootstrapElement = document.getElementById('p3xr-redis-ui-bootstrap');
    angular.bootstrap(bootstrapElement, ['p3xr-redis-ui']);
})