2.1.4 • Published 11 months ago

@twreporter/dual-channel v2.1.4

Weekly downloads
35
License
MIT
Repository
-
Last release
11 months ago

Dual-channel

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'

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 dualChannelUtils from '@twreporter/dual-channel'

const sheets = new dualChannelUtils.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.

Using webpack to bundle dual channel react component occurs errors

You can adopt Option 2 described in https://github.com/twreporter/dual-channel#import-react-component

In addition, you can add target: 'node' in your webpack config. (See https://webpack.js.org/concepts/targets/#usage) Adding target: 'node' prevents webpack from bundling nodejs built-in modules.

2.1.5-rc.0

11 months ago

2.1.3-rc.0

2 years ago

2.1.4-rc.0

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.2

3 years ago

2.1.2-rc.4

3 years ago

2.1.2-rc.3

3 years ago

2.1.2-rc.2

3 years ago

2.1.2-rc.1

4 years ago

2.1.1

4 years ago

2.1.2-rc.0

4 years ago

2.1.1-rc.2

4 years ago

2.1.1-rc.1

4 years ago

2.1.1-rc.0

4 years ago

2.1.1-beta.1

4 years ago

2.1.1-beta.2

4 years ago

2.1.1-beta.3

4 years ago

2.1.1-beta.0

4 years ago

2.1.0

4 years ago

2.1.0-rc.12

4 years ago

2.1.0-rc.11

4 years ago

2.1.0-rc.10

4 years ago

2.1.0-beta.1

4 years ago

2.1.0-beta.2

4 years ago

2.1.0-rc.9

4 years ago

2.1.0-rc.8

4 years ago

2.1.0-rc.7

4 years ago

2.1.0-rc.6

4 years ago

2.1.0-rc.5

4 years ago

2.1.0-rc.4

4 years ago

2.1.0-rc.2

4 years ago

2.1.0-rc.3

4 years ago

2.1.0-rc.1

4 years ago

2.1.0-rc.0

4 years ago

2.0.1

4 years ago

2.0.1-beta.0

4 years ago

2.0.0-rc.2

4 years ago

2.0.0-rc.1

4 years ago

2.0.0-rc.0

4 years ago

1.0.1-beta.1

4 years ago

1.0.0

4 years ago

1.0.0-rc.9

4 years ago

1.0.0-rc.8

4 years ago

1.0.0-rc.7

4 years ago

1.0.0-rc.5

4 years ago

1.0.0-rc.6

4 years ago

1.0.0-rc.3

4 years ago

1.0.0-rc.4

4 years ago

1.0.0-rc.2

4 years ago

1.0.0-rc.1

4 years ago