背景

我一般都是在activity dashboard页看同事的提交记录,这样只要我有权限的项目有人提交了我就能够知道,虽然提交的具体代码压根不看.......但至少能够了解各个项目的开发情况(如果大家都认真写了commit message的话)。不过有个比较悲剧的情况是有一个我有权限的项目我只是看看并不参与开发,在activity dashboard我能看到同事对此项目的提交记录,而此项目的迭代速度比较快,所以看起来就像有一些commit狂魔在刷屏,经常出现对我并不是很重要的信息占据了大片屏幕位置,我要在N多的activity信息中寻找我真正关心的信息,这就比较扯了,所以我就在想,有没有什么办法能够在我打开activity dashboard页面的时候自动对信息做一个分级,让我一眼能够看到哪些是重要信息,哪些是次要的呢?想了一下,认为通过写一个Chrome插件能够解决这个问题,当打开activity dashboard页面的时候根据不同的项目名字对对应的activity项赋予不同的背景色,比如我不太关心的,就将背景色置为灰色,比较关心的,就置为比较醒目的颜色,这样能够满足所有的信息都能够获取到,并且能够优先处理关心度高的信息,此方案看上去可行。

实现

实现比较简单,通过content_scripts实现即可:

manifest.json:

{
"manifest_version": 2,
"name": "gitlab-activity-bg-color",
"version": "0.0.1",
"description": "gitlab-activity-bg-color.js",
"content_scripts":
[
{
"matches": ["*://xxx.xxx.xxx.xxxx/dashboard/activity"],
"js": ["./gitlab-activity-bg-color.js"],
"css": [],
"run_at": "document_end"
}
]
}

gitlab-activity-bg-color.js:

function giveActivityBgColor() {
const activityBgColor = {
"foo": "#DDDDDD",
"bar": "#66FF66"
};
const activityBoxes = document.getElementsByClassName("event-item");
for (let i = 0; i < activityBoxes.length; i++) {
try {
const projectName = activityBoxes[i].getElementsByClassName("project-name")[0].textContent;
if (projectName in activityBgColor) {
activityBoxes[i].style += "; background-color: " + activityBgColor[projectName];
}
} catch(e) {
console.error(e);
}
}
};
setInterval(giveActivityBgColor, 1000)

要设置为定时运行是因为gitlab的dashboard是滚动到页面底部加载新内容,有新内容到来时也需要能够处理到,简单起见就设置为一秒运行一次了。

然后在Chrome中选择插件所在目录打包安装即可。

.

Chrome插件:gitlab activity dashboard background-color的更多相关文章

  1. [chrome插件分享] gitlab-tree 更方便的浏览Gitlab上的代码

    说明 经常玩Github的人肯定都知道大名鼎鼎的octotree吧,这款chrome插件可以说是浏览代码的神器,利用左侧的树形菜单可以很方便的打开目录.浏览文件等,加上Github全站本身使用了pja ...

  2. 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  3. 【干货】Chrome插件(扩展)开发全攻略

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  4. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

  5. 【干货】Chrome插件(扩展)开发全攻略(转)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  6. 动手做第一个Chrome插件

    Chrome插件是令人惊讶的简单,一旦你弄懂它的工作和实现原理.它是由一部分HTML,一部分Js,然后混合了一个叫做manifest.json的Json文件组合而成的整体.这意味着你可以使用你最擅长的 ...

  7. Chrome插件(Extensions)开发攻略

    本文将从个人经验出发,讲述为什么需要Chrome插件,如何开发,如何调试,到哪里找资料,会遇到怎样的问题以及如何解决等,同时给出一个个人认为的比较典型的例子——获取网页内容,和服务器交互,再把信息反馈 ...

  8. 利用chrome插件批量读取浏览器页面内容并写入数据库

    试想一下,如果每天要收集100页网页数据甚至更多.如果采用人工收集会吐血,用程序去收集也就成为一个不二的选择.首先肯定会想到说用java.php.C#等高级语言,但这偏偏又有个登陆和验证码,搞到无所适 ...

  9. chrome插件编写之新版hello world

    编写chrome插件之前,需要熟悉一下相应的chrome插件开发环境.从编写hello world开始,参考阅读官方的教程,是一个不错的选择.这里主要是基于chrome的官方教程,稍稍做了一些修改和扩 ...

随机推荐

  1. PAT甲题题解-1062. Talent and Virtue (25)-排序水题

    水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...

  2. 《Linux内核设计与实现》Chapter 1 读书笔记

    <Linux内核设计与实现>Chapter 1 读书笔记 一.Unix的特点 Unix从Multics中产生,是一个强大.健壮和稳定的操作系统. 特点 1.很简洁 2.在Unix系统中,所 ...

  3. (Alpha)Let's-Chronos分数分配规则

    Requirement: 每个团队开一个讨论会,协商讨论团队贡献分的分配方式.每个团队的团队贡献分为50分/人.每个人分数不能相同,请详细说明分数的分配规则. 为了完成此次的团队贡献分的分配任务,我们 ...

  4. (改进)Python语言实现词频统计

    需求: 1.设计一个词频统计的程序. 2.英语文章中包含的英语标点符号不计入统计. 3.将统计结果按照单词的出现频率由大到小进行排序. 设计: 1.基本功能和用法会在程序中进行提示. 2.原理是利用分 ...

  5. angular浏览器滚动条滚动到指定element 触发事件

    angular.module('app').directive('ScrollTrigger', () => { return { restrict: "A", link:f ...

  6. 使用AutoMapper实现Dto和Model的自由转换(中)

    在上一篇文章中我们构造出了完整的应用场景,包括我们的Model.Dto以及它们之间的转换规则.下面就可以卷起袖子,开始我们的AutoMapper之旅了. [二]以Convention方式实现零配置的对 ...

  7. MT【105】待定系数算最大最小

    已知$x,y,z>0$,则$max\{2x,\frac{1}{y},y+\frac{1}{x}\}$的最小值______ 分析:首先关注到$2x=\frac{1}{y}=y+\frac{1}{x ...

  8. Spring点滴八:Spring注入集合

    在Spring中我们通过value属性来配置基本数据类型,通过标签的ref属性来配置对象的引用.这两种情况只能给bean传递一个值,那么如何传递多个值呢?Spring提供了四种Collection类型 ...

  9. Tomcat:IOException while loading persisted sessions: java.io.EOFException

    Tomcat:IOException while loading persisted sessions: java.io.EOFException 产生原因: 最近将项目名称修改了一下,然后启动项目, ...

  10. 前端学习 -- Css -- 文本样式

    text-transform可以用来设置文本的大小写 可选值: none 默认值,该怎么显示就怎么显示,不做任何处理 capitalize 单词的首字母大写,通过空格来识别单词 uppercase 所 ...