• Stars
    star
    279
  • Rank 147,967 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A desktop CSV editor for data publishers

Stories in Ready Build Status Dependency Status

Comma Chameleon

Comma Chameleon is a desktop CSV editor (built with Electron.js) that provides a simple interface for editing data.

Developed by the ODI as a proof of concept, it has now been replaced by Data Curator (GitHub).

Summary of features

Validate your CSV on the fly using CSVlint, so you can be sure your data is reuse-ready before you publish it
Comma Chameleon lets you export your data as a Data Package, ready for publication and reuse
Integrate with Octopub and publish your data to Github

Download and Install App

Choose a platform from the Releases page.

Drag the application to your applications folder. If you encounter a warning message informing you the application cannot be opened due to emanating from an unknown developer try the following. This occurs due to Mac OS quarantining applications where it cannot determine the certificate used to sign the application.
Steps:

Right click the app, then option+click on Open.

Development

Requirements

node and npm

You can use npm to install all relevant packages and development dependencies using the following set of commands. Node and Bower install the dependencies contained in package.json and bower.json respectively

npm install -g bower electron
npm install
bower install

External (non-JS) dependencies

Comma Chameleon relies on CSVlint.sh to carry out CSV validation. This is not included in the repo, and is downloaded and installed by the build.js script. As with the page build script, this script is also run when the app is started with the npm start command.

Development: Running the full application locally

To open the app run:

npm start

This will download the non-JS dependencies (namely CSVlint.sh), build the handlebars views (from comma-chameleon/views-content) and start the app.

Application Architecture

Comma Chameleon is built using Electron.js, a framework that allows developers to build desktop applications using web technology.

There are two parts of the application, the main process and the renderer process. The main process deals with things like carrying out file operations, validating CSVs, rendering views, and exporting to Github. The renderer acts very much like client side JS in a web browser, dealing with things like presentation, and user interactions.

IPC messaging

Electron passes and listens for messages between main and renderer using the IPC module, one for the main process and one for the renderer process.

For example, when importing an Excel file, the main process reads the Excel file and opens a new window in the renderer process. Once the window has opened, the main process sends the worksheet names to the renderer process, which are then displayed to the user. Once a user selects a worksheet, the renderer process sends a message back to the main process, and the main process converts the relevant worksheet to CSV and loads it into a new window.

Views

To keep things DRY, the HTML views are written using Handlebars, see the views-content folder. The views are then built using the page-build.js script, which also gets run when the app is started with the npm start command.

Tests

Electron-Mocha has been adopted for testing, it enables both DOM and node.js testing and provides command line options to enable testing of both.

Assuming you have installed electron-mocha globally (via npm i electron-mocha -g), you can run the tests like this:

npm test

Or to run the main and renderer tests separately, you can run:

npm run test-main  # run tests for the runtime components provided by Electron
npm run test-renderer # run tests that execute client side

Otherwise you can run:

electron-mocha test/main/
electron-mocha --renderer test/renderer/ # run tests that execute client side

Deployment: Packaging

Building a new package

(This assumes you're running OSX)

Install gulp

brew install wine # This allows us to specify the icon for Windows pacakges
npm i electron-packager -g
gulp build

You can also build a package for a specific platform by running gulp build --platform={one of 'linux', 'darwin' or 'win32'}.

More Repositories

1

synthetic-data-tutorial

A hands-on tutorial showing how to use Python to do anonymisation with synthetic data
Python
76
star
2

BDNS

Building Device Naming Standards initiative
Python
66
star
3

open-data-tech-review

57
star
4

open-data-certificate

The mark of quality and trust for open data
Ruby
46
star
5

uk-postcodes

Ruby
41
star
6

octopub

Publish data easily, quickly and correctly
Ruby
41
star
7

ODI

Defining the ODI itself
27
star
8

open-standards-guidebook

Repo for the open standards for data guidebook
HTML
27
star
9

shared

Repo that we use for non-repo-specific stories and other shared stuff.
22
star
10

git-data-viewer

A viewer for Open Data sets stored in git repositories. In progress.
Ruby
22
star
11

data-publish-list

Curated list of links to help you publish open data
21
star
12

open-data-licensing

HTML
20
star
13

parse-uk-addresses

Code for parsing UK addresses
Ruby
18
star
14

csv-validation-research

Research into CSV validation
18
star
15

bothan

A simple platform for publishing metrics, both as JSON, and as embeddable visualisations and dashboards
Ruby
16
star
16

OpenRefine-WS

Code to enable OpenRefine to run as an authenticated web service
JavaScript
16
star
17

pathway

Map your organisation's pathway to open data success
Ruby
14
star
18

csv-my-git

Add csv diff capabilities to your local git configuration
Shell
14
star
19

data-definitions

A Colloquial Definition of Big, Open, and Personal Data
JavaScript
9
star
20

collaborative-data-patterns-catalogue

Website for the catalogue of service design patterns for collaboratively maintained data projects
HTML
8
star
21

linked-csv-browser

A browser for Linked CSV data
JavaScript
7
star
22

dashboards

ODI dashboards, built using Dashing
Ruby
7
star
23

cid

Continuous Integration for Data
Ruby
7
star
24

chef-envbuilder

Build a Dotenv configuration file from a data bag.
Ruby
6
star
25

abm-information-economy

Agent-based modelling of the information economy
Groovy
6
star
26

open-data-barometer-viz

Visualisation of the Open Data Barometer report data
6
star
27

p2p

Website for results of peer to peer lending research
HTML
6
star
28

election-data-format

Defining simple tabular and Linked Data formats for election data
6
star
29

interactive-data-ethics-canvas

ODI Learning Data Ethics Canvas App
Svelte
5
star
30

big-data-publishing

(Draft) Guidance, sample code (potentially), etc related to publishing big data on the Web
CSS
5
star
31

multichain-client

Ruby
5
star
32

coopy-ruby

A Ruby port of Paul Fitzpatrick's coopyhx library for calculating tabular diffs
Ruby
5
star
33

juvia_rails

Painfully simple Rails integration for Juvia
Ruby
5
star
34

philbot

Cloudfiles client
Ruby
5
star
35

training-web

Training micro sites
JavaScript
5
star
36

frontend-www

The main frontend for the Quirkafleeg publishing platform
HTML
5
star
37

open-addresses

Early prototype of Open Addresses project. See github.com/OpenAddressesUK instead, now.
JavaScript
5
star
38

public-procurement

5
star
39

breasal

A Ruby gem that converts GB and Irish Eastings and Northing to Latitude and Longitude
Ruby
4
star
40

R-projects

Hosts projects dealing with R and stats
HTML
4
star
41

blockchain-and-distributed-technology-landscape-research

HTML
4
star
42

csv_finder

A simple script that fetches references all the CSV files in data.gov.uk
Ruby
4
star
43

toolbox

This repository powers the ODI Toolbox Website, a suite of open data applications.
CSS
4
star
44

bimble

[DEPRECATED by https://dependabot.com] A script for Ruby projects that automatically clones, updates the bundle, publishes a branch, and opens a pull request.
Ruby
4
star
45

csv2rdf

CSV to RDF converter
Ruby
4
star
46

adapt-contrib-drawerPageNavigation

Adapt2 extension that add a navigation element to the drawer allowing users to get between pages without having to return to the main menu
JavaScript
4
star
47

pinboard-harvester

Harvest our Pinboard bookmarks into a MongoDB Database
Ruby
3
star
48

ODI-eLearning

The eLearning repo for UKODI
JavaScript
3
star
49

LRS

The Learning Records System
JavaScript
3
star
50

presentations

Presentations based on reveal.js
HTML
3
star
51

FNR_Analysis

Analysis of fire service data in london
JavaScript
3
star
52

colleen

data art commission 2014
JavaScript
3
star
53

hat-tip

CSS
3
star
54

csv-profiler

An experimental project in Ruby for profiling the contents of CSV files
Ruby
3
star
55

data-sharing-abm-model

Agent Based Model looking at the effect of openness on data sharing and innovation by companies
Python
3
star
56

buildmemes

Build status meme images as a service. Because why not.
Ruby
3
star
57

open-orgn-services

Services that support ODI's operation as an open organisation.
Ruby
3
star
58

chef-libcurl

Simple cookbook for pulling curl dev deps
Ruby
2
star
59

findingstories.learndata.info

JavaScript
2
star
60

schemas

CSS
2
star
61

odi-website-drupal

Drupal install for theodi.org
PHP
2
star
62

os-themes

Operating system themes and wallpapers
Shell
2
star
63

annual_report_cover_generator

Ruby
2
star
64

member-directory

The ODI's member directory frontend application
CSS
2
star
65

adapt2docx

Convert adapt2 elearning pages into docx for easy client review.
PHP
2
star
66

tsb-project-data-viz

2
star
67

R-playground

R
2
star
68

csv2json

CSV to JSON converter
Ruby
2
star
69

nodejs-oauth-template

CSS
2
star
70

henry

Continuously deploy your Rubygems via Travis
Ruby
2
star
71

training-data

Github Training Repository
2
star
72

certificate-factory

Automagically generate Open Data Certificates from a CKAN Dataset or Data.gov.uk atom feed.
Ruby
2
star
73

public-displays

Enable your spaces to have professional looking public displays using this simplistic application. You can have multiple screens running multiple playlists and even provide instant control to change displayed content or just make all the displays show your company logo.
PHP
2
star
74

data-ecosystems-net-zero

The data ecosystems & innovation programme: data used to measure net zero in the UK.
Jupyter Notebook
2
star
75

quirkafleeg

Ruby
2
star
76

tsb-project-data

Ruby
2
star
77

csv-auto-api

A quick NodeJS script to create a simple REST API from a CSV file
JavaScript
2
star
78

education-open-data-challenge

This repository contains a list of links to datasets from trustworthy international organisations, sourced by the ODI to help participants in the ODI/Microsoft Education Open Data Challenge.
HTML
2
star
79

drupal-cdn

A fork of the Drupal CDN module (http://drupal.org/project/cdn) that supports MySQL
PHP
2
star
80

adapt-contrib-jsonSchema

A code input box for adapt that validates JSON input
JavaScript
1
star
81

talks

Presentations delivered by ODI team members
JavaScript
1
star
82

euro-elections

1
star
83

led-display

LED display at MoL for ODI summit
JavaScript
1
star
84

learndata.info

Website hosting for domain
CSS
1
star
85

bundle

Ruby
1
star
86

cuke-chef

Playing with cucumber-chef 2.1
Ruby
1
star
87

hidden-data-extractor

Server code to examine any web page and extract data in javascript (e.g. JSON).
CSS
1
star
88

data-ecosystem-simulation

Simulation of the impact of choosing different licensing schemes on innovation and data flows
JavaScript
1
star
89

bothan-dashboards

CSS
1
star
90

vending-machine

connection script for Vending Machine
Python
1
star
91

noodile

p2p-data CSV parser
Ruby
1
star
92

foodchain

Food safety inspections in a blockchain, because why not?
Ruby
1
star
93

adapt-textInput-AI

JavaScript
1
star
94

chef-odi-science-tiger

Ruby
1
star
95

odi-organogram

Visualisations of the ODI team
HTML
1
star
96

chef-dictionary

Install something at `/usr/share/dict/words`
Ruby
1
star
97

odi-labs

HTML
1
star
98

odi-logstash

Logstash, we love it
Ruby
1
star
99

chef-hoppler

Cookbook to manage the [hoppler](https://github.com/theodi/hoppler) database backup tool
Ruby
1
star
100

hoppler

A Ruby script and associated rake tasks to back up a database into Rackspace cloud files and clean up old backups.
Ruby
1
star