提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件( 二 )

  1. 其次通过XMLHttpRequest获取任务列表数据,获取数据后,可以进行表单数据绑定 。
var xhr = new XMLHttpRequest();xhr.open("GET",url,true);xhr.onreadystatechange = function () {if (xhr.readyState == 4) {var resp = JSON.parse(xhr.responseText);if (resp instanceof Array) {sheet.setDataSource(resp);}}}xhr.send();
  1. 绑定数据后还可以为其添加筛选、排序等功能 。如为其筛选区域 。如想查看北方区所有的论坛帖子,就可以在sheet表单第9列为其绑定筛选条件 。
【提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件】var condition =new GC.Spread.Sheets.ConditionalFormatting.Condition(                  GC.Spread.Sheets.ConditionalFormatting.ConditionType.textCondition,{compareType: GC.Spread.Sheets.ConditionalFormatting.TextCompareType .contains,expected: "*北方区*",} );sheet.rowFilter().addFilterItem(9, condition);sheet.rowFilter().filter(9);sheet.rowFilter().filterButtonVisible(true);其结果如下图所示:
提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

文章插图
  1. 根据条件规则设置样式
sheet.conditionalFormats.addSpecificTextRule(        GC.Spread.Sheets.ConditionalFormatting.TextComparisonOperators.contains,        "未处理",style1,ranges);sheet.conditionalFormats.addSpecificTextRule(        GC.Spread.Sheets.ConditionalFormatting.TextComparisonOperators.contains,        "处理中", style2,ranges);以上代码分别为"未处理"与"处理中"赋值不同样式 。这样子可以很醒目看到论坛帖子处理状态 。其结果如下所示:
提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

文章插图
  1. 利用SpreadJS 可以导出Excel的特性,可以将当前sheet导出到Excel中 。在导出Excel前,要通过toJSON获取其序列化数据 。这时候要注意序列化选项:将includeBindingSource设置为true, columnHeadersAsFrozenRows设置为true 。
var serializationOption = {        includeBindingSource: true,        columnHeadersAsFrozenRows: true,};var json = spread.toJSON(serializationOption);在序列化成功后,就可以导出到Excel文件啦 。var excelIo = new GC.Spread.Excel.IO();excelIo.save( json,function (blob) {    saveAs(blob, fileName);},function (e) {    console.log(e);});在manifest.json文件中进行基础配置,如icons可以配置插件图标,我们的插件安装后 , popup页面也运行了;但是我们也发现了,popup页面只能做临时性的交互操作,用完就关了,不能存储信息或者和其他标签页进行交互等等;这时就需要用到background(后台) , 它是一个常驻的页面 , 它的生命周期是插件中所有类型页面中最长的;这里设置background.js 用来作为后台管理 , 处理通知等、刷新、徽章等数据 。至于action配置之前也提到了,可以配置弹出页面,最后的permissions可以配置权限 。
提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

文章插图
基础配置之后,就可以在background.js中来进行我们的处理啦 。在插件安装成功后,可以通过chrome.alarms这个api创建刷新时间与通知时间 。
chrome.runtime.onInstalled.addListener(function () {console.log("插件已被安装");chrome.storage.sync.get(["notiTime", "updateTime"], function (result) {    if (result && result.notiTime) {      var notiTime = parseFloat(result.notiTime);      if (notiTime > 0) {        chrome.alarms.create("UserReplyTimer", { periodInMinutes: notiTime });      }    }    if (result && result.updateTime) {      var updateTime = parseFloat(result.updateTime);      if (updateTime > 0) {        chrome.alarms.create("UpdateCountTimer", {          periodInMinutes: updateTime,        });      }    }  });});

推荐阅读