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

@mirrormedia/dual-channel

v3.1.4-beta.11

Published

Build Dual Channel style infographic web page on demand

Downloads

50

Readme

Dual-channel

npm (latest) npm (rc)

Dual Channel is a React Component to simultaneously present paragraphs and images in the browser viewport.

Developer Document

Install

Install dependencies:

make check-dep

Dev

make dev-server

Build

make build

Test Embedded Code with Mock Data

make test-embedded-code

Import React Component

You can import either

Option 1:

import dualChannel from '@twreporter/dual-channel'

const ReactComponent = dualChannel.ReactComponent

or

Option 2:

import ReactComponent from '@twreporter/dual-channel/lib/app'

Import Sheets Class

import Sheets from '@twreporter/dual-channel/lib/sheets'

const sheets = new Sheets({
  spreadsheetId,
  keyFile,
  targetSheetsId,
})

The reaseon why Sheets is not exported in src/index.js is because it imports googleapis. googleapis imports nodejs specific modules, which makes webpack build failure. Thus, we need to import Sheets directly from its file.

Data

Reproduce Demo Data

The demo data file is dev/data.json, and it is generated from this demo spreadsheet.

You can reproduce dev/data.json by the following sample codes.

import Sheets from './src/sheets'
import path from 'path'
import fs from 'fs'

const sheets = new Sheets({
  spreadsheetId: '1Ppisv4HTZHYMp95umgCoADNuP1PSkL-t9na-5lRIqSY',
  keyFile: path.resolve(__dirname, './spreadsheet-api-key-file.json'),
  targetSheetsId: [2143095237, 492967532, 2049208510, 489341977, 1453335111],
})

sheets.getJSONData().then(data => {
  fs.writeFileSync(
    path.resolve(__dirname, './dev/data.json'),
    JSON.stringify(data),
    { encoding: 'utf8' }
  )
})

In the above sample codes, you have to download service account and name it as spreadsheet-api-key-file.json. The service account is used to be authenticated by Google Sheet API.

If you don't have service account, you can create one by

  1. Go to the Developer Console
  2. Click your project or create one if you have none
  3. Click APIs & Services tab
  4. Click Credentials tab
  5. Click Manage service accounts tab
  6. Create service account.

Besides createing service account, you also have to enable Google Sheets API.

  1. Go to the Developer Console
  2. Click your project
  3. Click APIs & Services tab
  4. Click Library tab
  5. search Google Sheets API
  6. enable Google Sheets API

Build Embedded Code

import Sheets from '@twreporter/dual-channel/lib/sheets'
import dualChannelUtils from '@twreporter/dual-channel'

const sheets = new Sheets({
  spreadsheetId: '1Ppisv4HTZHYMp95umgCoADNuP1PSkL-t9na-5lRIqSY',
  keyFile: path.resolve(__dirname, './spreadsheet-api-key-file.json'),
  targetSheetsId: [2143095237, 492967532, 2049208510, 489341977, 1453335111],
})

sheets
  .getJSONData()
  .then(data => {
    return dualChannelUtils.buildEmbeddedCode(data)
  })
  .then(embeddedCode => {
    // You could copy embeddedCode and past it in html file
  })

Troubleshooting

I got 'Insufficient Permission' or 'The caller does not have permission' error message

  1. You should check if service account is provided, make sure you give the right file path.
  2. Make sure you already enable your Google Sheets API in your project.
  3. Find your service account email.
$ cat spreadsheet-api-key-file.json | grep client_email

and share your spreadsheet with your service account email.