NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @namespace https://openuserjs.org/users/smika
// @name ZenHub Board Display Mode
// @description Display Mode for the ZenHub Board.
// @copyright 2019, Simon Mika (simonmika.com)
// @license MIT
// @version 1.0.0
// @include https://app.zenhub.com/workspaces/*/boards?repos=*
// @grant none
// @run-at document-idle
// ==/UserScript==
// ==OpenUserJS==
// @author smika
// ==OpenUserJS==
(function() {
'use strict';
// remove borders and menus once
succeedOnce(() => { document.querySelector('div.zhc-sidebar').remove() })
succeedOnce(() => { document.querySelector('div.zhc-pipeline.zhc-pipeline--add-placeholder').remove() })
succeedOnce(() => { document.querySelector('div.zhc-board__menu').remove() })
succeedOnce(() => { document.querySelector('div.zhc-topbar').remove() })
// change cards regularly
let timerId = setInterval(() => {
// width: 100%;
document.querySelector('div.zh-workspace__container.zhu-flex--column > div > div').style['max-width'] = '100vw'
document.querySelectorAll('div.zhc-pipelines > div > div').forEach(element => { element.style = 'flex-grow: 1' })
document.querySelectorAll('div.zhc-pipeline-body > div').forEach(element => { element.style.width = '100%' })
document.querySelectorAll('div.zhc-pipeline-body > div > div').forEach(element => { element.style.width = '100%' })
document.querySelectorAll('div.zhc-pipeline-body > div > div > div').forEach(element => { element.style.width = '100%'; element.style['max-width'] = 'none' })
document.querySelectorAll('div.zhc-pipeline-body > div > div > div > div').forEach(element => { element.style.width = '100%' })
document.querySelectorAll('div.zhc-pipeline-body > div > div > div > div > div').forEach(element => { element.style['max-width'] = 'none' })
// remove filter by epic button
document.querySelectorAll('div.zhc-issue-card__epic-filter').forEach(element => { element.remove() })
// move estimate badge
document.querySelectorAll('span.zhc-badge.zhc-badge--estimate').forEach(element => { element.style.position = "absolute"; element.style.right = "1em"; element.style.top = "1.5em" })
}, 2000)
})();
function succeedOnce(apply) {
let timerId = setInterval(() => {
apply()
clearInterval(timerId)
}, 2000)
}