Giter Club home page Giter Club logo

vechk / poker-search Goto Github PK

View Code? Open in Web Editor NEW
116.0 116.0 2.0 7.63 MB

一款能让你一次开启复数窗口,在各种网站进行站内搜索的 Chrome 扩展插件。灵感来自于 Smartisan TNT 发牌手

Home Page: https://chrome.google.com/webstore/detail/poker-search/oojeodibjbmkclnocinjolfaigheengg

License: MIT License

JavaScript 5.52% TypeScript 84.48% CSS 9.41% HTML 0.58%
chrome chrome-extension search search-extension search-plugin

poker-search's Introduction

poker-search's People

Contributors

allcontributors[bot] avatar vechk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

poker-search's Issues

窗口高度的适配

目前的窗口高度是 1000,对于 1080P 的显示器是不行的,需要能根据屏幕来自适应窗口高度

按底下任务栏图标时,全部页面(窗口)回到顶部

例如我将某个卡牌中的超链接打开了。

这时浏览器会变成最顶部的窗口,要是我想重新查看搜索结果,就变得很麻烦了。

要是能够点击底部任务栏的图标直接将所有页面回到顶部就好了。

当然,我觉得这只是一个妥协的方法,应该还有更好的方式。

点击popup图标后改变图标

似乎没有直接探测的方式,只能用间接的手法。比如利用 runtime.connect 循环连接,一断开就能判定是离开了 popup 页面,也就实现了这个点击改变图标的效果

多屏支持

现在启动窗口都是在第一个屏幕启动多,如果有多屏的话会有点不畅。

思路

  1. 通过 chrome.system.display.getInfo() 获取到屏幕信息
  2. 用当前所在的窗口来判断处于第几个屏幕当中
  3. 得出屏幕后,更改 Base 的状态

设置页面的问题

  • 横向滚动不够好,可能还得做成二级页面
  • 添加一个预设的栏目,预设一些站点,这样就不用人输入,直接拖拽进去即可
  • 需要优化编辑站点的交互(加动画)
  • 需要优化删除站点的交互(加动画)
  • 清空掉所有的站点的时候,需要能提醒用户(控制窗里也加上这种提示)
  • 当设置的站点行超过屏幕最大能显示的窗口后需要能做提醒
  • 读取网站图标的功能还没做
  • url pattern 暴露了 chromeid,这个是用来给 declarativeNetRequest API 判断是否移动端访问的。还是在创建窗口的时候给 URL 带上这种 chrome id 吧。(也许这种 declarativeNetRequest 的拦截方式不太好)
  • 使用%poker% 代替[[]]

以发牌手形式展现浏览器打开的全部标签

场景
假设用户自己打开了50多个页面,标签小且混乱
若能以发牌手形式展现,将会清晰明了并能同时多窗口浏览。

注意:需要删除掉用户打开的标签页,不然内存会爆炸的

搜索框

在总控制窗口中加入搜索框。

用来进行搜索。

设置页面完成

实现发牌页面的管理

1.0 包括:

  • 添加/删除 新的搜索页(新的牌)
  • 修改发牌的顺序
    用户能够在设置中,使用拖拽的方式修改页面(卡牌)的弹出排序
  • 字符串搜索(Poker + xxx)的开关
  • 如果便捷加入网站的地址栏按钮也做了的话,在设置里也做个开关

不同宽度的窗口

poker

一个窗口本来只能显示一列。但这种方式对于更适合用大屏来查看的网站便显得不太方便:诸如地图、一些资源下载站等。

但目前的问题在于如何让用户在设置页面中,直观且优雅地随意更改一个页面的显示宽度。

最大化后,需要能合并到浏览器原有的窗口上

现有发牌后,点击页面最大化按钮,需要能合并到之前的浏览器窗口上。
这个功能很重要,用户需要能得知页面的URL、进行收藏或进行各种页面上的处理,就需要浏览器原有的窗口栏功能。

因此,需要实现一个限制:点击发牌窗口的最大化时,原有的窗口保持不变。
也就是说:仍然处在发牌手列表里,没有删除或者隐藏。

只是把原有页面的链接,通过新标签的方式打开了

Tag 功能

增加以 Tag 分层的功能

  • 是否完成

每一层都将围绕 Tag 进行发牌。
例如第一层是搜索,第二层是社交,第三层是商店

假若用户在给 10 个网站都打上了商店标签,而显示器一层只能显示 6 个。
那么超过的页面数量,便分配到下一层,下一层只显示 4 个页面。

用户能给已加入卡组的网站打上 Tag

  • 是否完成

在设置页面中,用户能 创建 Tag(就像 Notion 创建 Tag 一样)
并给已收录的网站进行 Tag 的修改

智能分配 Tag

  • 是否完成

这个可能要接入哪里的数据库,分析网址,辨别是什么类型的。
接着就归类到固定 Tag

标题栏高度的问题

因为要在 background script 的阶段就要启动 createBase,用于获取控制窗的 createData.leftcreateData.top。但是 createBase 会计算标题栏高度,可是这种计算需要打开控制窗(/control.html)后才可以进行(要得到 window.innerHeight)。
在进入控制窗之前标题栏的高度都是使用默认值30

解决思路

  1. 在插件安装后,在触发的事件里计算标题栏高度并缓存(调出一个窗口以取得 window.innerHeight
  2. 之后只需要读取这个缓存起来的标题栏高度即可

避免展开后同时加载的性能优化

我先打开了第一层。
他们在加载了。
然后再打开第二层,打开结束后调用一次切换层的方法,这样就能把第一层再次调成最前面

那么第二层的展开是通过0高度来展开的,这样就不会碍事

0高度展开后调用那个切换层的方法,就自动展开为现在第二层的窗口高度

消除掉页面的『关闭』与『最小化』按钮

要是每个页面都有『最小化』『最大化』『关闭』的按钮,容易混淆是非,用户不知道按哪里才能全部关闭。

我记忆中 Chrome 那些谷歌关联登录时,那些页面是没有这三个按钮的。不知道官方手册有没有提供这个方法进行展开?

测试

应该不至于做 UI 测试。只要覆盖最核心的几个部分就可以了,比如 src/coresrc/options/ 里的 updater

ESLint

需要添加一些 ESLint 规则

Webpack 优化

一些有关于 webpack 的调整点

  • 图片自动 resize 到需要的尺寸,16、24、32、64、128 ,现在的只是复制粘贴过去。所以压缩包会很大
  • 不知道 Chrome 的插件环境里头,可不可以运行 ES Module。可以的话这样就能节约点空间(看了好几个 .bundle.js,都包括了 React 进去,其实只要只要一份就好了吧)
  • 输出 Zip 文件给 Actions 上传发版用
  • React 升级到 v18
  • *.module.css 的 Typing 插件
  • 这是跑在比较新的浏览器上,也许没有必要用 babel 之类的转换工具,这样也能省去使用 source map
  • 不要使用乱码的类名,比如tTNaJvWzO_VslUj8o2gg
  • pages/*/index.jsx 改为 pages/*/index.ts

options 不一致的情况

未来的 options 会有新的扩展,这时候需要做处理。利用 Options.version 来判断版本,不一致则更新至新版本的 Options

将屏幕的上下一分为二

大屏与竖屏用户没必要浪费空间,受限于横向空间所铺设的页面。
我们能够将上下一分为二,在同一层获得2倍的页面数量
假设横向能铺6列,上下分开后,一层能铺12页。

新建页面后的图标不刷新

用户每次新建一个页面后,需要能刷新一下图标。
现在新建页面后,自动把『?图标』当成缓存图片了

设置页面优化

需要优化编辑站点的交互(加动画)

  • 在一行中添加一个新的站点
  • 新增一行改成拖拽式

需要优化删除站点的交互(加动画)

清空掉所有的站点的时候,需要能提醒用户(控制窗里也加上这种提示)

全局快捷键的问题

现在全局快捷键( focus-layout )在 Poker 控制窗未启动的时候是调出控制窗,进入了控制窗后才会是 focus-layout 的真正功能。

可是目前用快捷键打开控制窗后,再按快捷键没有反应,并没有切换回来。而是要输入了内容,打开了搜索窗口后才能切换回来。

排版布局与刷新按钮

image
两边的【块】高度没有对齐。
再加上可能网站的图标会进行更改或无法读取,此时应给用户一个机会执行一次图标刷新。
这个图标放在图片中,右上角红框的位置(前提是右边的设置块往下移,对齐了左边)

上下按钮+换页

在总控制窗口中,增加圆形⭕️,Pache 色底的上与下的按钮。

控制切换一整层的功能。

网站图标的问题

应该要能缓存下来,不要每次等到 React 渲染的时候又重新获取

Poker 的召唤术

  1. 本地的 Poker页面,可在新建窗口、新建标签页中直接见到 Poker #39
  2. 选中关键字后,右键能使用发牌手搜索关键字 #9
  3. 点击 popup 栏后出现搜索框,就像谷歌翻译那样 #63
  4. 在用户使用搜索引擎后,出现提示:找不到想要的?试试 Poker #143

Popup 栏

根据 @DBinKBB 的建议,可以把 popup 栏做成像谷歌翻译那样,选中文本后点击 popup 图标就打开搜索控制窗;没有选中就打开 popup 栏,里边有输入框,输入完后就打开搜索控制窗。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.