refactor js
This commit is contained in:
parent
e1d450218c
commit
cdcc4ddd51
117
templates/js/_externalSitesInTopMenu.js
Normal file
117
templates/js/_externalSitesInTopMenu.js
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
sideMenuContainer.attr('data-externalsitesintopmenu', '1')
|
||||||
|
|
||||||
|
var menuCache = null
|
||||||
|
|
||||||
|
var updateTopMenu = function() {
|
||||||
|
var breakpointMobileWidth = 1024
|
||||||
|
var menu = $('#appmenu')
|
||||||
|
var apps = menu.find('li')
|
||||||
|
var minAppsDesktop = 8
|
||||||
|
var usePercentualAppMenuLimit = 0.9
|
||||||
|
var isMobile = $(window).width() < breakpointMobileWidth
|
||||||
|
var lastShownApp = null
|
||||||
|
var appShown = []
|
||||||
|
var moreApps = $('#more-apps')
|
||||||
|
var navigation = $('#navigation')
|
||||||
|
var navigationApps = $('#apps ul')
|
||||||
|
var appCount = null
|
||||||
|
|
||||||
|
var currentMenuCache = menu.html() + menu.next().html()
|
||||||
|
|
||||||
|
if (currentMenuCache === menuCache) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
navigationApps.html('')
|
||||||
|
|
||||||
|
apps.each(function(i, app) {
|
||||||
|
var dataId = app.getAttribute('data-id')
|
||||||
|
|
||||||
|
if (dataId === null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataId.indexOf('external_index') === -1) {
|
||||||
|
app.classList.add('hidden')
|
||||||
|
app.classList.add('app-hidden')
|
||||||
|
} else {
|
||||||
|
app.classList.remove('hidden')
|
||||||
|
app.classList.add('app-external-site')
|
||||||
|
appShown.push(app)
|
||||||
|
navigationApps.append(app.outerHTML)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var rightHeaderWidth = $('.header-right').outerWidth()
|
||||||
|
var headerWidth = $('header').outerWidth()
|
||||||
|
var availableWidth = headerWidth - $('#nextcloud').outerWidth() - $('#header .side-menu-opener').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210)
|
||||||
|
|
||||||
|
if (!isMobile) {
|
||||||
|
availableWidth = availableWidth * usePercentualAppMenuLimit
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isMobile && appCount > minAppsDesktop) {
|
||||||
|
appCount = minAppsDesktop
|
||||||
|
} else if (!isMobile && appCount < minAppsDesktop) {
|
||||||
|
appCount = minAppsDesktop
|
||||||
|
} else {
|
||||||
|
appCount = Math.floor(availableWidth / $('#appmenu li').width())
|
||||||
|
}
|
||||||
|
|
||||||
|
if (appCount === 0) {
|
||||||
|
menu.addClass('hidden')
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.removeClass('hidden')
|
||||||
|
menu.css('opacity', 1)
|
||||||
|
|
||||||
|
if (appShown.length - 1 - appCount >= 1) {
|
||||||
|
appCount--
|
||||||
|
}
|
||||||
|
|
||||||
|
moreApps.find('a').removeClass('active')
|
||||||
|
|
||||||
|
var k = 0
|
||||||
|
var notInHeader = 0
|
||||||
|
var name
|
||||||
|
|
||||||
|
$(appShown).each(function(i, app) {
|
||||||
|
app = $(app)
|
||||||
|
name = app.data('id')
|
||||||
|
|
||||||
|
if (k < appCount && appCount > 0) {
|
||||||
|
app.removeClass('hidden')
|
||||||
|
lastShownApp = app
|
||||||
|
|
||||||
|
$('#apps li[data-id=' + name + '].app-external-site').addClass('in-header')
|
||||||
|
} else {
|
||||||
|
app.addClass('hidden')
|
||||||
|
notInHeader++
|
||||||
|
|
||||||
|
$('#apps li[data-id=' + name + '].app-external-site').removeClass('in-header')
|
||||||
|
|
||||||
|
if (appCount > 0 && app.children('a').hasClass('active')) {
|
||||||
|
lastShownApp.addClass('hidden')
|
||||||
|
app.removeClass('hidden')
|
||||||
|
notInHeader++
|
||||||
|
|
||||||
|
$('#apps li[data-id=' + name + '].app-external-site')
|
||||||
|
.removeClass('in-header')
|
||||||
|
.addClass('in-header')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
k++
|
||||||
|
})
|
||||||
|
|
||||||
|
if (notInHeader === 0) {
|
||||||
|
moreApps.hide()
|
||||||
|
navigation.hide()
|
||||||
|
} else {
|
||||||
|
moreApps.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
menuCache = menu.html() + menu.next().html()
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(updateTopMenu, 50)
|
15
templates/js/_loaderEnabled.js
Normal file
15
templates/js/_loaderEnabled.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
var pageLoader = $('<div id="side-menu-loader">')
|
||||||
|
var pageLoaderBar = $('<div id="side-menu-loader-bar">')
|
||||||
|
|
||||||
|
body.append(pageLoader)
|
||||||
|
pageLoader.append(pageLoaderBar)
|
||||||
|
|
||||||
|
var pageLoaderValue = 0
|
||||||
|
|
||||||
|
$(window).on('beforeunload', function() {
|
||||||
|
setInterval(function() {
|
||||||
|
pageLoaderBar.width(pageLoaderValue.toString() + '%')
|
||||||
|
|
||||||
|
pageLoaderValue = Math.min(pageLoaderValue + .2, 100)
|
||||||
|
}, 25)
|
||||||
|
})
|
|
@ -91,21 +91,7 @@
|
||||||
sideMenuContainer.append(sideMenu)
|
sideMenuContainer.append(sideMenu)
|
||||||
|
|
||||||
<?php if ($_['loader-enabled'] === true): ?>
|
<?php if ($_['loader-enabled'] === true): ?>
|
||||||
var pageLoader = $('<div id="side-menu-loader">')
|
<?php require_once __DIR__.'/_loaderEnabled.js'; ?>
|
||||||
var pageLoaderBar = $('<div id="side-menu-loader-bar">')
|
|
||||||
|
|
||||||
body.append(pageLoader)
|
|
||||||
pageLoader.append(pageLoaderBar)
|
|
||||||
|
|
||||||
var pageLoaderValue = 0
|
|
||||||
|
|
||||||
$(window).on('beforeunload', function() {
|
|
||||||
setInterval(function() {
|
|
||||||
pageLoaderBar.width(pageLoaderValue.toString() + '%')
|
|
||||||
|
|
||||||
pageLoaderValue = Math.min(pageLoaderValue + .2, 100)
|
|
||||||
}, 25)
|
|
||||||
})
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($_['opener-position'] === 'before'): ?>
|
<?php if ($_['opener-position'] === 'before'): ?>
|
||||||
|
@ -115,122 +101,6 @@
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($_['external-sites-in-top-menu']): ?>
|
<?php if ($_['external-sites-in-top-menu']): ?>
|
||||||
sideMenuContainer.attr('data-externalsitesintopmenu', '1')
|
<?php require_once __DIR__.'/_externalSitesInTopMenu.js'; ?>
|
||||||
|
|
||||||
var menuCache = null
|
|
||||||
|
|
||||||
var updateTopMenu = function() {
|
|
||||||
var breakpointMobileWidth = 1024
|
|
||||||
var menu = $('#appmenu')
|
|
||||||
var apps = menu.find('li')
|
|
||||||
var minAppsDesktop = 8
|
|
||||||
var usePercentualAppMenuLimit = 0.9
|
|
||||||
var isMobile = $(window).width() < breakpointMobileWidth
|
|
||||||
var lastShownApp = null
|
|
||||||
var appShown = []
|
|
||||||
var moreApps = $('#more-apps')
|
|
||||||
var navigation = $('#navigation')
|
|
||||||
var navigationApps = $('#apps ul')
|
|
||||||
var appCount = null
|
|
||||||
|
|
||||||
var currentMenuCache = menu.html() + menu.next().html()
|
|
||||||
|
|
||||||
if (currentMenuCache === menuCache) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
navigationApps.html('')
|
|
||||||
|
|
||||||
apps.each(function(i, app) {
|
|
||||||
var dataId = app.getAttribute('data-id')
|
|
||||||
|
|
||||||
if (dataId === null) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dataId.indexOf('external_index') === -1) {
|
|
||||||
app.classList.add('hidden')
|
|
||||||
app.classList.add('app-hidden')
|
|
||||||
} else {
|
|
||||||
app.classList.remove('hidden')
|
|
||||||
app.classList.add('app-external-site')
|
|
||||||
appShown.push(app)
|
|
||||||
navigationApps.append(app.outerHTML)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
var rightHeaderWidth = $('.header-right').outerWidth()
|
|
||||||
var headerWidth = $('header').outerWidth()
|
|
||||||
var availableWidth = headerWidth - $('#nextcloud').outerWidth() - $('#header .side-menu-opener').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210)
|
|
||||||
|
|
||||||
if (!isMobile) {
|
|
||||||
availableWidth = availableWidth * usePercentualAppMenuLimit
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isMobile && appCount > minAppsDesktop) {
|
|
||||||
appCount = minAppsDesktop
|
|
||||||
} else if (!isMobile && appCount < minAppsDesktop) {
|
|
||||||
appCount = minAppsDesktop
|
|
||||||
} else {
|
|
||||||
appCount = Math.floor(availableWidth / $('#appmenu li').width())
|
|
||||||
}
|
|
||||||
|
|
||||||
if (appCount === 0) {
|
|
||||||
menu.addClass('hidden')
|
|
||||||
}
|
|
||||||
|
|
||||||
menu.removeClass('hidden')
|
|
||||||
menu.css('opacity', 1)
|
|
||||||
|
|
||||||
if (appShown.length - 1 - appCount >= 1) {
|
|
||||||
appCount--
|
|
||||||
}
|
|
||||||
|
|
||||||
moreApps.find('a').removeClass('active')
|
|
||||||
|
|
||||||
var k = 0
|
|
||||||
var notInHeader = 0
|
|
||||||
var name
|
|
||||||
|
|
||||||
$(appShown).each(function(i, app) {
|
|
||||||
app = $(app)
|
|
||||||
name = app.data('id')
|
|
||||||
|
|
||||||
if (k < appCount && appCount > 0) {
|
|
||||||
app.removeClass('hidden')
|
|
||||||
lastShownApp = app
|
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site').addClass('in-header')
|
|
||||||
} else {
|
|
||||||
app.addClass('hidden')
|
|
||||||
notInHeader++
|
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site').removeClass('in-header')
|
|
||||||
|
|
||||||
if (appCount > 0 && app.children('a').hasClass('active')) {
|
|
||||||
lastShownApp.addClass('hidden')
|
|
||||||
app.removeClass('hidden')
|
|
||||||
notInHeader++
|
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site')
|
|
||||||
.removeClass('in-header')
|
|
||||||
.addClass('in-header')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
k++
|
|
||||||
})
|
|
||||||
|
|
||||||
if (notInHeader === 0) {
|
|
||||||
moreApps.hide()
|
|
||||||
navigation.hide()
|
|
||||||
} else {
|
|
||||||
moreApps.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
menuCache = menu.html() + menu.next().html()
|
|
||||||
}
|
|
||||||
|
|
||||||
setInterval(updateTopMenu, 50)
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
})();
|
})();
|
||||||
|
|
Loading…
Reference in a new issue