You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'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) } }) } }
|