From 8a91c6af561f3795289b2d3f46baf5a4d0a764f0 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Sun, 14 Jun 2020 18:58:22 +0200 Subject: [PATCH] update config --- .gitignore | 3 --- Dockerfile | 2 +- README.md | 2 +- data/.gitignore | 3 +++ data/timemap_data.xlsx | Bin 0 -> 37507 bytes docs/architecture.md | 4 ++-- src/config.js | 12 +++++++++++ src/index.js | 3 ++- src/initialize.js | 2 +- src/lib.js | 21 ++++++++++++++++++ src/models/StoreJson.js | 2 +- src/sheets_config.js | 46 ---------------------------------------- temp/.gitignore | 2 -- 13 files changed, 44 insertions(+), 58 deletions(-) create mode 100644 data/.gitignore create mode 100644 data/timemap_data.xlsx create mode 100644 src/config.js create mode 100644 src/lib.js delete mode 100644 src/sheets_config.js delete mode 100644 temp/.gitignore diff --git a/.gitignore b/.gitignore index 6674d05..0426581 100755 --- a/.gitignore +++ b/.gitignore @@ -7,12 +7,9 @@ .env *service-account-key\.json -src/config.js /yarn-error.log *.pem .travis.yml.old tags tags.lock tags.temp - -src/sheets_config.js diff --git a/Dockerfile b/Dockerfile index 794700d..3297bc6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ RUN cd /www; yarn COPY . /www WORKDIR /www RUN yarn build -RUN mkdir -p temp +RUN mkdir -p data # set your port ENV PORT 8080 diff --git a/README.md b/README.md index 79bb4a8..81269cb 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Other configuration options, such as the port at which the server will expose resources, are also modifiable from the .env file. #### [Sources](#sources) -Sources are specified in [src/sheets_config.js](https://github.com/forensic-architecture/datasheet-server/blob/develop/src/sheets_config.js). Datasheet server currently only supports Google Sheets as a source. +Sources are specified in [src/config.js](https://github.com/forensic-architecture/datasheet-server/blob/develop/src/config.js). Datasheet server currently only supports Google Sheets as a source. ###### [Google Sheets](#source-google-sheets) | sheets | A list of objects, one for each sheet that is being used as a source. Each sheet object has a `name` (String), an `id` (String), and a `tabs` (object) field, which are explained below. | object | diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..8a7b0fd --- /dev/null +++ b/data/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!timemap_data.xlsx diff --git a/data/timemap_data.xlsx b/data/timemap_data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0f6bce5dda5cf5337f16dc93ab9189b6e91cdbbe GIT binary patch literal 37507 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 { }) ) + app.use(express.static(__dirname + '/public')) + app.server.listen(process.env.PORT || 4040, () => { console.log('===========================================') console.log(`Server running on port ${app.server.address().port}`) diff --git a/src/initialize.js b/src/initialize.js index f3c3d43..44e59bf 100755 --- a/src/initialize.js +++ b/src/initialize.js @@ -1,7 +1,7 @@ import StoreJson from './models/StoreJson' import fetchers from './lib/Fetcher' import Controller from './lib/Controller' -import config from './sheets_config' +import config from './config' import R from 'ramda' const isntNull = n => n !== null diff --git a/src/lib.js b/src/lib.js new file mode 100644 index 0000000..7a488ae --- /dev/null +++ b/src/lib.js @@ -0,0 +1,21 @@ +import BP from './lib/blueprinters' + +export function prefixedTabs (prefix) { + return { + [`${prefix}_export_events`]: BP.deeprows, + [`${prefix}_export_categories`]: [BP.groups, BP.rows], + [`${prefix}_export_filters`]: BP.tree, + [`${prefix}_export_narratives`]: BP.rows, + [`${prefix}_export_sources`]: BP.deepids, + [`${prefix}_export_sites`]: BP.rows + } +} + +export const tabs = { + export_events: BP.deeprows, + export_categories: [BP.groups, BP.rows], + export_filters: BP.tree, + export_narratives: BP.rows, + export_sources: BP.deepids, + export_sites: BP.rows +} diff --git a/src/models/StoreJson.js b/src/models/StoreJson.js index 72ca593..07390c8 100644 --- a/src/models/StoreJson.js +++ b/src/models/StoreJson.js @@ -1,7 +1,7 @@ import fs from 'mz/fs' import errors from '../lib/errors' -const STORAGE_DIRNAME = 'temp' +const STORAGE_DIRNAME = 'data' function partsFromFilename (fname) { const body = fname.slice(0, -5) diff --git a/src/sheets_config.js b/src/sheets_config.js deleted file mode 100644 index c27cef0..0000000 --- a/src/sheets_config.js +++ /dev/null @@ -1,46 +0,0 @@ -import BP from './lib/blueprinters' - -const timemapStructure = { - export_events: BP.deeprows, - export_categories: [BP.groups, BP.rows], - export_narratives: BP.rows, - export_sources: BP.deepids, - export_sites: BP.rows, - export_tags: BP.tree -} - -const treatyStructure = { - treaty_export_events: BP.deeprows, - treaty_export_categories: [BP.groups, BP.rows], - export_narratives: BP.rows, - treaty_export_sources: BP.deepids, - export_sites: BP.rows, - export_tags: BP.tree -} - -const moraldriftStructure = { - moraldrift_export_events: BP.deeprows, - moraldrift_export_categories: [BP.groups, BP.rows], - moraldrift_export_narratives: BP.rows, - moraldrift_export_sources: BP.deepids, - moraldrift_export_sites: BP.rows, - moraldrift_export_tags: BP.tree - -} - -export default { - gsheets: [{ - name: 'example', - id: '1UC7DkCFeUXHfpUxUGruExwFbP4pqVBdJLOKfo6wDDGk', - tabs: timemapStructure, - }], - - - xlsx: [ - /** { - name: 'my_local_sheet', - tabs: timemapStructure, - path: 'temp/my_local_sheet.xlsx' - } **/ - ] -} diff --git a/temp/.gitignore b/temp/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/temp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore