try to take over the world!
// ==UserScript==
// @name Overmind Helper
// @namespace http://tampermonkey.net/
// @version 0.7
// @description try to take over the world!
// @author You
// @include /^http?://.*overmind\.hz\.netease\.com/.*$
// @grant none
// ==/UserScript==
// @include /^http?://.*overmind\.hz\.netease\.com/\d+/sprint/list.*$
// @include /^http?://.*overmind\.hz\.netease\.com/\d+/sprint/todo/\d+/list.*$
// ---------------------------------------------------------------------------------------------
var viewPresetOfMoyi = '{"title":{"fixed":"left","initHide":true,"show":true,"order":0},"status":{"initHide":true,"show":true,"order":7},"assignee":{"initHide":true,"show":true,"order":9},"reporter":{"initHide":true,"show":true,"order":8},"verifier":{"initHide":true,"show":true,"order":10},"businessAreaDTO":{"initHide":true,"show":false,"order":24},"relatedMouleId":{"initHide":true,"show":true,"order":11},"relateTargetDTOS":{"initHide":true,"show":false,"order":26},"relateProjectDTOS":{"initHide":true,"show":false,"order":27},"priority":{"initHide":true,"show":false,"order":28},"sprintDTO":{"initHide":true,"show":true,"order":29},"versionDTOS":{"initHide":true,"show":true,"order":30},"dueDate":{"initHide":true,"show":false,"order":31},"planStartTime":{"initHide":true,"show":false,"order":32},"planSubmitTestTime":{"initHide":true,"show":false,"order":33},"planReleaseTime":{"initHide":true,"show":false,"order":34},"createdAt":{"initHide":true,"show":false,"order":35},"updatedAt":{"initHide":true,"show":false,"order":36},"originalEstimate":{"initHide":true,"show":false,"order":37},"timeSpent":{"initHide":true,"show":false,"order":38},"customfield_448":{"initHide":true,"show":false,"order":39},"customfield_449":{"initHide":true,"show":false,"order":40},"customfield_450":{"initHide":true,"order":41},"customfield_451":{"initHide":true,"order":1},"customfield_452":{"initHide":true,"show":false,"order":42},"customfield_453":{"initHide":true,"show":false,"order":43},"customfield_454":{"initHide":true,"show":false,"order":44},"customfield_677":{"initHide":true,"show":false,"order":45},"customfield_678":{"initHide":true,"order":5},"customfield_679":{"initHide":true,"order":46,"show":false},"customfield_680":{"initHide":true,"order":4},"customfield_681":{"initHide":true,"order":47,"show":false},"customfield_20210312181835":{"initHide":true,"show":false,"order":48},"customfield_20210420152825":{"initHide":true,"order":25,"show":false},"customfield_20210511102801":{"initHide":true,"show":false,"order":49},"customfield_447":{"initHide":true,"order":12,"show":false},"customfield_20210621140646":{"show":false,"order":13},"customfield_20210713191842":{"order":14},"customfield_20210713191904":{"order":16},"customfield_20210713191947":{"order":15},"customfield_20210713192003":{"order":17},"customfield_20210713192029":{"order":18},"customfield_20210713192039":{"order":20},"customfield_20210713192050":{"order":22},"customfield_20210713192105":{"order":19},"customfield_20210713192114":{"order":21},"customfield_20210713192127":{"order":23},"customfield_20210723104210":{"show":false,"order":6},"customfield_20210723104150":{"order":3},"customfield_20210803192443":{"show":false,"order":50},"customfield_20210817161931":{"order":2}}';
var viewPresetOfLook = '{"title":{"fixed":"left","initHide":true,"show":true,"order":0},"status":{"initHide":true,"show":true,"order":3},"assignee":{"initHide":true,"show":false,"order":11},"reporter":{"initHide":true,"show":true,"order":5},"verifier":{"initHide":true,"show":false,"order":7},"businessAreaDTO":{"initHide":true,"show":true,"order":6},"relatedMouleId":{"initHide":true,"show":true,"order":15},"relateTargetDTOS":{"initHide":true,"show":true,"order":8},"relateProjectDTOS":{"initHide":true,"show":false,"order":17},"priority":{"initHide":true,"show":true,"order":4},"sprintDTO":{"initHide":true,"order":18,"show":false},"versionDTOS":{"initHide":true,"show":false,"order":23},"dueDate":{"initHide":true,"show":false,"order":24},"planStartTime":{"initHide":true,"show":false,"order":25},"planSubmitTestTime":{"initHide":true,"show":true,"order":21},"planReleaseTime":{"initHide":true,"show":true,"order":22},"createdAt":{"initHide":true,"show":false,"order":26},"updatedAt":{"initHide":true,"show":false,"order":27},"originalEstimate":{"initHide":true,"show":false,"order":28},"timeSpent":{"initHide":true,"show":false,"order":30},"customfield_448":{"initHide":true,"order":9},"customfield_449":{"initHide":true,"order":31,"show":false},"customfield_450":{"initHide":true,"order":16},"customfield_451":{"initHide":true,"order":32,"show":false},"customfield_452":{"initHide":true,"order":33,"show":false},"customfield_453":{"initHide":true,"order":34,"show":false},"customfield_454":{"initHide":true,"order":10},"customfield_677":{"initHide":true,"order":12},"customfield_678":{"initHide":true,"order":20},"customfield_679":{"initHide":true,"order":19},"customfield_680":{"initHide":true,"order":14},"customfield_681":{"initHide":true,"order":13},"customfield_20210312181835":{"initHide":true,"show":false,"order":36},"customfield_20210420152825":{"initHide":true,"order":29},"customfield_20210511102801":{"initHide":true,"order":1,"fixed":"left"},"customfield_20210621140646":{"initHide":true,"order":35},"customfield_20210713191842":{"initHide":true,"order":39},"customfield_20210713191904":{"initHide":true,"order":37},"customfield_20210713191947":{"initHide":true,"order":40},"customfield_20210713192003":{"initHide":true,"order":38},"customfield_20210713192029":{"initHide":true,"order":43},"customfield_20210713192039":{"initHide":true,"order":41},"customfield_20210713192050":{"initHide":true,"order":45},"customfield_20210713192105":{"initHide":true,"order":44},"customfield_20210713192114":{"initHide":true,"order":42},"customfield_20210713192127":{"initHide":true,"order":46},"customfield_447":{"initHide":true,"order":47},"customfield_20210723104150":{"initHide":true,"order":48,"show":false},"customfield_20210723104210":{"initHide":true,"order":49,"show":false},"customfield_20210803192443":{"show":false,"order":2}}';
var viewPresetOfKSong = '{"title":{"fixed":"left","initHide":true,"show":true,"order":0},"status":{"initHide":true,"show":true,"order":1},"assignee":{"initHide":true,"show":true,"order":3},"reporter":{"initHide":true,"show":true,"order":2},"verifier":{"initHide":true,"show":false,"order":8},"businessAreaDTO":{"initHide":true,"show":false,"order":10},"relatedMouleId":{"initHide":true,"show":true,"order":5},"relateTargetDTOS":{"initHide":true,"show":false,"order":11},"relateProjectDTOS":{"initHide":true,"show":false,"order":15},"priority":{"initHide":true,"show":false,"order":13},"sprintDTO":{"initHide":true,"show":false,"order":14},"versionDTOS":{"initHide":true,"show":false,"order":16},"dueDate":{"initHide":true,"show":false,"order":12},"planStartTime":{"initHide":true,"show":false,"order":7},"planSubmitTestTime":{"initHide":true,"order":48},"planReleaseTime":{"initHide":true,"show":true,"order":49},"createdAt":{"initHide":true,"show":false,"order":17},"updatedAt":{"initHide":true,"show":false,"order":18},"originalEstimate":{"initHide":true,"show":false,"order":9},"timeSpent":{"initHide":true,"show":false,"order":19},"customfield_448":{"initHide":true,"show":false,"order":20},"customfield_449":{"initHide":true,"show":false,"order":21},"customfield_450":{"initHide":true,"show":false,"order":22},"customfield_451":{"initHide":true,"show":false,"order":23},"customfield_452":{"initHide":true,"show":false,"order":24},"customfield_453":{"initHide":true,"show":false,"order":25},"customfield_454":{"initHide":true,"show":false,"order":26},"customfield_677":{"initHide":true,"show":false,"order":27},"customfield_678":{"initHide":true,"show":false,"order":28},"customfield_679":{"initHide":true,"show":false,"order":29},"customfield_680":{"initHide":true,"show":false,"order":30},"customfield_681":{"initHide":true,"show":false,"order":31},"customfield_20210312181835":{"initHide":true,"show":false,"order":32},"customfield_20210420152825":{"initHide":true,"order":6},"customfield_20210511102801":{"initHide":true,"order":4},"customfield_20210621140646":{"initHide":true,"order":33},"customfield_20210713191842":{"initHide":true,"order":34},"customfield_20210713191904":{"initHide":true,"order":35},"customfield_20210713191947":{"initHide":true,"order":40},"customfield_20210713192003":{"initHide":true,"order":41},"customfield_20210713192029":{"initHide":true,"order":37},"customfield_20210713192039":{"initHide":true,"order":36},"customfield_20210713192050":{"initHide":true,"order":38},"customfield_20210713192105":{"initHide":true,"order":42},"customfield_20210713192114":{"initHide":true,"order":43},"customfield_20210713192127":{"initHide":true,"order":44,"show":false},"customfield_447":{"initHide":true,"order":39},"customfield_20210723104150":{"initHide":true,"show":false,"order":45},"customfield_20210723104210":{"initHide":true,"show":false,"order":46},"customfield_20210803192443":{"initHide":true,"show":false,"order":47}}';
var saveRecentSprints = function(){
console.log('saveRecentSprints');
setTimeout(function(){
hideRecentSprients();
var title = document.getElementsByClassName("m-header")[0].textContent.split("/")[1];
var recentSprintsJson = window.localStorage.getItem("recentSprints");
if (recentSprintsJson == null) {
recentSprintsJson = "{}";
window.localStorage.setItem("recentSprints", recentSprintsJson);
}
var recentSprints = JSON.parse(recentSprintsJson);
if (recentSprints[title] == null) {
recentSprints[title] = location.href;
recentSprintsJson = JSON.stringify(recentSprints);
window.localStorage.setItem("recentSprints", recentSprintsJson);
}
}, 1000);
};
var showRecentSprints = function(){
console.log('showRecentSprints');
setTimeout(function(){
hideRecentSprients();
var recentSprintsJson = window.localStorage.getItem("recentSprints");
if (recentSprintsJson == null) {
recentSprintsJson = "{}";
window.localStorage.setItem("recentSprints", recentSprintsJson);
}
var recentSprints = JSON.parse(recentSprintsJson);
var recent = document.createElement('div');
recent.setAttribute("id", "myRecentSprints");
var container = document.getElementById("container");
container.insertBefore(recent, container.children[1]);
var title = document.createElement('div');
title.innerHTML = "<span>最近使用 <a id=\"clearMyRecentSprints\">[清空]</a></span>";
recent.appendChild(title);
document.getElementById("clearMyRecentSprints").addEventListener('click',function(){
window.localStorage.removeItem("recentSprints");
hideRecentSprients();
showRecentSprints();
}, false)
var list = document.createElement('ol');
recent.appendChild(list);
for(var sprint in recentSprints) {
var item = document.createElement('li');
item.innerHTML="<a href=\"" + recentSprints[sprint] + "\">" + sprint + "</a>";
list.appendChild(item);
}
}, 1000);
};
var hideRecentSprients = function() {
console.log('hideRecentSprients');
var recent = document.getElementById("myRecentSprints");
if (recent != null) {
recent.parentElement.removeChild(recent);
}
};
var refreshRecentSprints = function() {
if (location.pathname.includes("/sprint/todo/")) {
hideRecentSprients();
saveRecentSprints();
} else if(location.pathname.includes("/sprint/list")) {
hideRecentSprients();
showRecentSprints();
} else {
hideRecentSprients();
}
};
// ---------------------------------------------------------------------------------------------
var saveRecentViews = function(){
console.log('saveRecentViews');
setTimeout(function(){
hideRecentViews();
var title = document.getElementsByClassName("ant-breadcrumb")[0].textContent.split("/")[1];
var recentViewsJson = window.localStorage.getItem("recentViews");
if (recentViewsJson == null) {
recentViewsJson = "{}";
window.localStorage.setItem("recentViews", recentViewsJson);
}
var recentViews = JSON.parse(recentViewsJson);
if (recentViews[title] == null) {
recentViews[title] = location.href;
recentViewsJson = JSON.stringify(recentViews);
window.localStorage.setItem("recentViews", recentViewsJson);
}
}, 1000);
};
var showRecentViews = function() {
console.log('showRecentViews');
setTimeout(function(){
hideRecentViews();
var recentViewsJson = window.localStorage.getItem("recentViews");
if (recentViewsJson == null) {
recentViewsJson = "{}";
window.localStorage.setItem("recentViews", recentViewsJson);
}
var recentViews = JSON.parse(recentViewsJson);
var recent = document.createElement('div');
recent.setAttribute("id", "myRecentViews");
var container = document.getElementById("container");
container.insertBefore(recent, container.children[1]);
var title = document.createElement('div');
title.innerHTML = '<span>最近使用 <a id="clearMyRecentViews">[清空]</a></span>';
recent.appendChild(title);
document.getElementById("clearMyRecentViews").addEventListener('click',function(){
window.localStorage.removeItem("recentViews");
hideRecentViews();
showRecentViews();
}, false)
var list = document.createElement('ol');
recent.appendChild(list);
for(var view in recentViews) {
var item = document.createElement('li');
item.innerHTML="<a href=\"" + recentViews[view] + "\">" + view + "</a>";
list.appendChild(item);
}
}, 1000);
};
var hideRecentViews = function() {
console.log('hideRecentViews');
var recent = document.getElementById("myRecentViews");
if (recent != null) {
recent.parentElement.removeChild(recent);
}
};
var refreshRecentViews = function() {
if (location.pathname.includes("/viewManage/detail/")) {
hideRecentViews();
saveRecentViews();
} else if(location.pathname.includes("/viewManage/list")) {
hideRecentViews();
showRecentViews();
} else {
hideRecentViews();
}
};
// ---------------------------------------------------------------------------------------------
var showViewPresetConfig = function() {
console.log('showViewTableConfig');
setTimeout(function(){
var preset = document.createElement('div');
preset.setAttribute("id", "viewPresetConfig");
var anchor = document.getElementsByClassName("m-subnav")[0].children[0]
anchor.insertBefore(preset, anchor.children[1]);
var title = document.createElement('div');
title.innerHTML ='<span style="margin-left: 24px;">列预设: <a id="applyViewPresetOfMoyi">[心遇]</a> <a id="applyViewPresetOfLook">[直播]</a> <a id="applyViewPresetOfKSong">[K歌]</a></span>'
preset.appendChild(title);
document.getElementById("applyViewPresetOfMoyi").addEventListener('click',function(){
applyViewPreset(viewPresetOfMoyi);
}, false)
document.getElementById("applyViewPresetOfLook").addEventListener('click',function(){
applyViewPreset(viewPresetOfLook);
}, false)
document.getElementById("applyViewPresetOfKSong").addEventListener('click',function(){
applyViewPreset(viewPresetOfKSong);
}, false)
}, 1000);
};
var applyViewPreset = function(preset) {
try {
window.localStorage.setItem("1/viewDetail/list", preset);
location.reload();
} catch (error) {
console.error(error);
}
};
var refreshViewPresetConfig = function() {
if (location.pathname.includes("/viewManage/detail/")) {
showViewPresetConfig();
}
};
// ---------------------------------------------------------------------------------------------
var fixProjectMenuWidth = function() {
try {
document.getElementsByClassName("g-page")[0].childNodes[0].childNodes[1].childNodes[0].style.width="400px"
} catch (error) {
console.error(error);
}
};
// ---------------------------------------------------------------------------------------------
(function() {
'use strict';
// alert("hahaha " + location.pathname );
setTimeout(function(){
history.pushState = ( f => function pushState(){
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event('pushstate'));
window.dispatchEvent(new Event('locationchange'));
return ret;
})(history.pushState);
history.replaceState = ( f => function replaceState(){
var ret = f.apply(this, arguments);
window.dispatchEvent(new Event('replacestate'));
window.dispatchEvent(new Event('locationchange'));
return ret;
})(history.replaceState);
window.addEventListener('popstate',()=>{
window.dispatchEvent(new Event('locationchange'))
});
window.addEventListener('locationchange', function(){
console.log('location changed!');
refreshRecentSprints();
refreshRecentViews();
refreshViewPresetConfig();
fixProjectMenuWidth();
});
refreshRecentSprints();
refreshRecentViews();
refreshViewPresetConfig();
fixProjectMenuWidth();
}, 1000);
})();