npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@nocobase/plugin-action-import

v1.3.25-beta

Published

Import records using excel templates. You can configure which fields to import and templates will be generated automatically.

Downloads

8,582

Readme

import

English | 中文

Excel 数据导入插件。

安装激活

内置插件无需手动安装激活。

导入说明

数字类型字段

支持数字和百分比,N/A- 的文案会被过滤掉

| 数字1 | 百分比 | 数字2 | 数字3 | | -- | -- | -- | -- | | 123 | 25% | N/A | - |

转 JSON 之后为

{
  "数字1": 123,
  "百分比": 0.25,
  "数字2": null,
  "数字3": null,
}

布尔类型字段

输入文案支持(英文不区分大小写):

  • Yes Y True 1
  • No N False 0

| 字段1 | 字段2 | 字段3 | 字段4 | 字段4 | | -- | -- | -- | -- | -- | | 否 | 是 | Y | true | 0 |

转 JSON 之后为

{
  "字段1": false,
  "字段2": true,
  "字段3": true,
  "字段4": true,
  "字段5": false,
}

日期类型字段

| DateOnly | Local(+08:00) | GMT | | -- | -- | -- | | 2023-01-18 22:22:22 | 2023-01-18 22:22:22 | 2023-01-18 22:22:22 |

转 JSON 之后为

{
  "DateOnly": "2023-01-18T00:00:00.000Z",
  "Local(+08:00)": "2023-01-18T14:22:22.000Z",
  "GMT": "2023-01-18T22:22:22.000Z",
}

选择类型字段

选项值和选项标签都可作为导入文案,多个选项之间以以逗号(, )或顿号()区分

如字段 优先级 的可选项包括:

| 选项值 | 选项标签 | | -- | -- | | low | 低 | | medium | 中 | | high | 低 |

选项值和选项标签都可作为导入文案

| 优先级 | | -- | | 高 | | low |

转 JSON 之后为

[
  { "优先级": "high" },
  { "优先级": "low" },
]

中国行政区字段

| 地区1 | 地区2 | | -- | -- | | 北京市/市辖区 | 天津市/市辖区 |

转 JSON 之后为

{
  "地区1": ["11","1101"],
  "地区2": ["12","1201"]
}

附件字段

| 附件 | | --| | https://www.nocobase.com/images/logo.png |

转 JSON 之后为

{
  "附件": [
    {
      "filename": "logo.png",
      "title": "logo.png",
      "extname": ".png",
      "url": "https://www.nocobase.com/images/logo.png"
    }
  ]
}

关系类型字段

多条数据以逗号(, )或顿号()区分

| 部门/名称 | 分类/标题 | | -- | -- | | 开发组 | 分类1、分类2 |

转 JSON 之后为

{
  "部门": [1], // 1 为部门名称为「开发组」的记录 ID
  "分类": [1,2], // 1,2 为分类标题为「分类1」和「分类2」的记录 ID
}

JSON 类型字段

| JSON1 | | -- | | {"key":"value"} |

转 JSON 之后为

{
  "JSON": {"key":"value"}
}

地图几何图形类型

| Point | Line | Polygon | Circle | | -- | -- | -- | -- | | 1,2 | (1,2),(3,4) | (1,2),(3,4),(1,2) | 1,2,3 |

转 JSON 之后为

{
  "Point": [1,2],
  "Line": [[1,2], [3,4]],
  "Polygon": [[1,2], [3,4], [1,2]],
  "Circle": [1,2,3]
}

自定义导入格式

通过 db.registerFieldValueParsers() 方法注册自定义的 ValueParser,如:

import { BaseValueParser } from '@nocobase/database';

class PointValueParser extends BaseValueParser {
  async setValue(value) {
    if (Array.isArray(value)) {
      this.value = value;
    } else if (typeof value === 'string') {
      this.value = value.split(',');
    } else {
      this.errors.push('Value invalid');
    }
  }
}

const db = new Database();

// type=point 的字段导入时,将通过 PointValueParser 解析数据
db.registerFieldValueParsers({
  point: PointValueParser,
});

导入示例

| Point | | --| | 1,2 |

转 JSON 之后为

{
  "Point": [1,2]
}