1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 'use strict'
- import $ from 'jquery'
- import Vue from 'vue'
- import _ from 'lodash'
- const rootUrl = '/'
- module.exports = (alerts, socket) => {
- if ($('#page-type-all').length) {
- let vueAllPages = new Vue({ // eslint-disable-line no-unused-vars
- el: '#page-type-all',
- data: {
- tree: []
- },
- methods: {
- fetch: function (basePath) {
- let self = this
- $('#notifload').addClass('active')
- Vue.nextTick(() => {
- socket.emit('treeFetch', { basePath }, (data) => {
- if (self.tree.length > 0) {
- let branch = _.last(self.tree)
- branch.hasChildren = true
- _.find(branch.pages, { _id: basePath }).isActive = true
- }
- self.tree.push({
- hasChildren: false,
- pages: data
- })
- $('#notifload').removeClass('active')
- })
- })
- },
- goto: function (entryPath) {
- window.location.assign(rootUrl + entryPath)
- },
- unfold: function (entryPath) {
- let self = this
- let lastIndex = 0
- _.forEach(self.tree, branch => {
- lastIndex++
- if (_.find(branch.pages, { _id: entryPath }) !== undefined) {
- return false
- }
- })
- self.tree = _.slice(self.tree, 0, lastIndex)
- let branch = _.last(self.tree)
- branch.hasChildren = false
- branch.pages.forEach(page => {
- page.isActive = false
- })
- },
- mainAction: function (page) {
- let self = this
- if (page.isActive) {
- self.unfold(page._id)
- } else if (page.isDirectory) {
- self.fetch(page._id)
- } else {
- self.goto(page._id)
- }
- }
- },
- mounted: function () {
- let basePath = window.location.pathname.slice(0, -4)
- if (basePath.length > 1) {
- basePath = basePath.slice(1)
- }
- this.fetch(basePath)
- }
- })
- }
- }
|