mavenlink-js

This repository encapsulates shared assets and the Mavenlink Backbone Models and Collections used to interact with the Mavenlink API.

Usage no npm install needed!

<script type="module">
  import mavenlinkJs from 'https://cdn.skypack.dev/mavenlink-js';
</script>

README

Mavenlink JS

This repository encapsulates shared assets and the Mavenlink Backbone Models and Collections used to interact with the Mavenlink API.

Styleguide Installation

Add this line to your application's Gemfile:

gem 'mavenlink-js'

The models will then be available via the Rails asset pipeline.

Bootstrap the following on the global JavaScript namespace:

window.Mavenlink.svgImagePath = 'path/to/compiled/svg';

API Installation

Add dependency to your application's package.json

"dependencies": {
    ...
    "mavenlink-js": "git@github.com:mavenlink/mavenlink-js.git#[SHA]",
    ...
}

Run yarn install

Development

Important: After you merge your branch into master

On bigmaven, update the mavenlink-js dependency in package.json to point back to master. Then run yarn upgrade mavenlink-js which will update yarn.lock (equivalent to Gemfile.lock) to have the new sha.

Be sure to check in yarn.lock so that CI/deploy will grab the right artifacts!

Running Specs

To run the specs on the command line, run:

yarn test

Adding an endpoint (Model + Collection)

  1. Add Model with correct brainstem_key and url properties in src/models
  2. Add index entry for Model in src/models/index.coffee (in alphabetical order)
  3. Add Collection with correct url and model properties in src/collections
  4. Add index entry for Collection in src/collections/index.coffee (in alphabetical order)
  5. Add the collection the storage manager in src/base.coffee (in alphabetical order)
  6. Add to the builders in src/helpers/builders.coffee in order generate models for testing purposes
  7. Add specs for Model and Collection in spec/models/model-name-spec.coffee

For an example, see https://github.com/mavenlink/mavenlink-js/pull/301

Develop your application against a local checkout of mavenlink-js

In mavenlink-js, run: yarn unlink; yarn install; yarn link

In your application, run: yarn link mavenlink-js

Restart webpack and karma

When you are done, run: yarn unlink mavenlink-js and then yarn install to grab the original mljs package again

Restart webpack and karma

Develop/Update your application against a remote checkout of mavenlink-js

First, make sure you've unlinked mavenlink-js in the application and ensure you are updated with yarn install

In your application, change package.json to point to proper feature branch in dependencies i.e.

"mavenlink-js": "git@github.com:mavenlink/mavenlink-js.git#your-branch-or-SHA"

Run yarn upgrade mavenlink-js