gitlab_code_reviewer_helper

hello world

As of 2022-08-19. See the latest version.

// ==UserScript==
// @name         gitlab_code_reviewer_helper
// @namespace    http://tampermonkey.net/
// @version      0.5.1
// @description  hello world
// @author       You
// @require      http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @match        https://code.byted.org/*/*/merge_requests/*
// @match        https://codebase.byted.org/standalone-page/repository/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=byted.org
// @grant        none
// @license      no
// ==/UserScript==

const optionsStrList = [
    '风格问题-lint可修复',
    '风格问题-lint无法自动修复',
    '风格问题-未确定规范',
    '逻辑问题(bug)',
    'debug代码未还原',
    '存在性能隐患',
    '存在安全隐患'
]
const reg = /(\[风格问题-lint可修复\].+|\[风格问题-lint无法自动修复\].+|\[风格问题-未确定规范\].+|\[逻辑问题\(bug\)\].+|\[debug代码未还原\].+|\[存在性能隐患\].+|\[存在安全隐患\].+)/g
const replaceReg = /(\[风格问题-lint可修复\]|\[风格问题-lint无法自动修复\]|\[风格问题-未确定规范\]|\[逻辑问题\(bug\)\]|\[debug代码未还原\]|\[存在性能隐患\]|\[存在安全隐患\])/g

function addCateBtn()  {
    const btnContainer = $('.codebase-dv-thread')
    
    btnContainer.each((index,item)=>{

        if($(item).find('.xbw-select-wrap')?.length){
            $(item).find('textarea').trigger('input')
            return
        }

        let ele = $(`<span class=xbw-select-wrap><select style="width:100px;height:20px;font-size:10px;"><option value="">请选择分类</option>${optionsStrList.map((item,index)=>{
            return `<option value=${item}>${item}</option>`
        }).join('\n')}</select></span>`);

        let selectedValue = ""
        ele.on('input', function (e) {
            setTimeout(()=>{
                let val = $($(item).find('textarea')[0]).val()
                selectedValue = $(item).find('option:selected').val()
                if (selectedValue) {
                    replaceReg.lastIndex = 0
                    if(replaceReg.test(val)){
                        const str = val.replace(replaceReg, `[${selectedValue}]`)
                        $($(item).find('textarea')[0]).val(str)
                    }else{
                        val = `[${selectedValue}]${val}`
                        $($(item).find('textarea')[0]).val(val)
                    }
                    $(item).find('textarea').trigger('input')
                }
            })
        })

        $(item).find('textarea').on('input', function (e) {
            setTimeout(()=>{
                const isCancel = $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).html() === 'Cancel'
                reg.lastIndex = 0
                if(reg.test(e.target.value)){
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).attr('disabled',false)
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).attr('disabled',false)
                }else{
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).attr({disabled:'disabled'})
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).attr('disabled',!isCancel)
                }

                if($($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).attr('disabled')){  // 禁用状态  样式修改
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).removeClass('cb-activity-jss18')
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).addClass('cb-activity-jss19')
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).attr({title:"请选择分类"})
                    if(!isCancel){
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).removeClass('cb-activity-jss17')
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).addClass('cb-activity-jss19')
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).attr({title:"请选择分类"})
                    }
                }else{
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).addClass('cb-activity-jss18')
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).removeClass('cb-activity-jss19')
                    $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[0]).attr({title:''})
                    if(!isCancel){
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).addClass('cb-activity-jss17')
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).removeClass('cb-activity-jss19')
                        $($(item).find('.cb-activity-jss8 .cb-activity-jss16')[1]).attr({title:''})
                    }
                }
            })
        })
        $(item).find('textarea').trigger('input')
        setTimeout(()=>{
            const value = $($(item).find('textarea')[0]).val()
            replaceReg.lastIndex = 0
            if($(item).find('.cb-activity-jss94.cb-activity-jss95.md-preview').length && replaceReg.test(value)){
                $($(item).find('.cb-form-jss2')[0]).after(ele)
            }else if($(item).find('.cb-activity-jss94.cb-activity-jss95.md-preview').length){
            }else{
                $($(item).find('.cb-form-jss2')[0]).after(ele)
            }
        })
    })
}

(function() {
    'use strict';
    window.setInterval(() => {
        $('.codebase-dv-tr').filter((index, item) => {
            return !$(item).attr('data-cr-marked')
        }).attr('data-cr-marked', true)
            .click(function (){
            setTimeout(() => {
                addCateBtn()
            }, 500);
        })
    }, 1000);
})();