diff --git a/.eslintrc b/.eslintrc
index 08b6864..cbdb2ba 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,6 +1,7 @@
{
"extends": ["airbnb", "prettier"],
"plugins": ["sort-imports-es6-autofix"],
+ "parser": "babel-eslint",
"rules": {
"react/jsx-filename-extension": 0,
"linebreak-style": 0,
diff --git a/package-lock.json b/package-lock.json
index eb372cf..99a96a2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,62 @@
"@babel/highlight": "7.0.0-beta.42"
}
},
+ "@babel/generator": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz",
+ "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.44",
+ "jsesc": "2.5.1",
+ "lodash": "4.17.5",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
+ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz",
+ "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "7.0.0-beta.44",
+ "@babel/template": "7.0.0-beta.44",
+ "@babel/types": "7.0.0-beta.44"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz",
+ "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.44"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz",
+ "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "7.0.0-beta.44"
+ }
+ },
"@babel/highlight": {
"version": "7.0.0-beta.42",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.42.tgz",
@@ -37,6 +93,148 @@
}
}
},
+ "@babel/template": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz",
+ "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.44",
+ "@babel/types": "7.0.0-beta.44",
+ "babylon": "7.0.0-beta.44",
+ "lodash": "4.17.5"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz",
+ "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "7.0.0-beta.44"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz",
+ "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.2",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "babylon": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
+ "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz",
+ "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.44",
+ "@babel/generator": "7.0.0-beta.44",
+ "@babel/helper-function-name": "7.0.0-beta.44",
+ "@babel/helper-split-export-declaration": "7.0.0-beta.44",
+ "@babel/types": "7.0.0-beta.44",
+ "babylon": "7.0.0-beta.44",
+ "debug": "3.1.0",
+ "globals": "11.4.0",
+ "invariant": "2.2.4",
+ "lodash": "4.17.5"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz",
+ "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "7.0.0-beta.44"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz",
+ "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.2",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "babylon": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
+ "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.3.0"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "globals": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz",
+ "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz",
+ "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2",
+ "lodash": "4.17.5",
+ "to-fast-properties": "2.0.0"
+ },
+ "dependencies": {
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ }
+ }
+ },
"@types/node": {
"version": "9.6.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.0.tgz",
@@ -641,14 +839,25 @@
}
},
"babel-eslint": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz",
- "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=",
+ "version": "8.2.2",
+ "resolved": "http://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz",
+ "integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==",
+ "dev": true,
"requires": {
- "babel-code-frame": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0"
+ "@babel/code-frame": "7.0.0-beta.42",
+ "@babel/traverse": "7.0.0-beta.44",
+ "@babel/types": "7.0.0-beta.44",
+ "babylon": "7.0.0-beta.44",
+ "eslint-scope": "3.7.1",
+ "eslint-visitor-keys": "1.0.0"
+ },
+ "dependencies": {
+ "babylon": {
+ "version": "7.0.0-beta.44",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz",
+ "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==",
+ "dev": true
+ }
}
},
"babel-generator": {
@@ -3433,7 +3642,7 @@
"object.values": "1.0.4",
"prop-types": "15.6.1",
"react-reconciler": "0.7.0",
- "react-test-renderer": "16.2.0"
+ "react-test-renderer": "16.3.0"
}
},
"enzyme-adapter-utils": {
@@ -8991,6 +9200,29 @@
"js-tokens": "3.0.2"
}
},
+ "lorem-ipsum": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-1.0.4.tgz",
+ "integrity": "sha1-MLcqOx4ZH1UGKvjH36spGuT72RI=",
+ "requires": {
+ "optimist": "0.3.7"
+ },
+ "dependencies": {
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "requires": {
+ "wordwrap": "0.0.3"
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+ }
+ }
+ },
"loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
@@ -15654,9 +15886,9 @@
}
},
"react": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz",
- "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==",
+ "version": "16.3.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.3.0.tgz",
+ "integrity": "sha512-Qh35tNbwY8SLFELkN3PCLO16EARV+lgcmNkQnoZXfzAF1ASRpeucZYUwBlBzsRAzTb7KyfBaLQ4/K/DLC6MYeA==",
"requires": {
"fbjs": "0.8.16",
"loose-envify": "1.3.1",
@@ -15690,9 +15922,9 @@
}
},
"react-dom": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz",
- "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==",
+ "version": "16.3.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.3.0.tgz",
+ "integrity": "sha512-xT/FxawAurL6AV8YtAP7LkdDJFFX2vvv17AqFLQRF81ZtWLXkV/0dcAaiFIy0lmoQEFT931TU9aaH+5dBUxTcw==",
"requires": {
"fbjs": "0.8.16",
"loose-envify": "1.3.1",
@@ -15737,6 +15969,11 @@
}
}
},
+ "react-is": {
+ "version": "16.3.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.3.0.tgz",
+ "integrity": "sha512-YOo+BNK2z8LiDxh2viaOklPqhwrMMsNPWnXTseOqJa8/ob8mv9aD9Z5FqqQnKNbIerBm+DoIwjAAAKcpdDo1/w=="
+ },
"react-popper": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-0.8.3.tgz",
@@ -15778,7 +16015,6 @@
"requires": {
"autoprefixer": "7.1.6",
"babel-core": "6.26.0",
- "babel-eslint": "7.2.3",
"babel-jest": "20.0.3",
"babel-loader": "7.1.2",
"babel-preset-react-app": "3.1.1",
@@ -16066,13 +16302,14 @@
}
},
"react-test-renderer": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.2.0.tgz",
- "integrity": "sha512-Kd4gJFtpNziR9ElOE/C23LeflKLZPRpNQYWP3nQBY43SJ5a+xyEGSeMrm2zxNKXcnCbBS/q1UpD9gqd5Dv+rew==",
+ "version": "16.3.0",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.3.0.tgz",
+ "integrity": "sha512-7FAfgIT8Kvew36b2VFXnhMxjKkwAnicD1dyopq7Ot19WAhfJkyhYNwPzM1AnCfYccvEhO0x4FbqJETyMGQwgIg==",
"requires": {
"fbjs": "0.8.16",
"object-assign": "4.1.1",
- "prop-types": "15.6.1"
+ "prop-types": "15.6.1",
+ "react-is": "16.3.0"
}
},
"react-transition-group": {
@@ -17706,6 +17943,19 @@
"require-main-filename": "1.0.1"
}
},
+ "tether": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.3.tgz",
+ "integrity": "sha512-YCfE/Ym9MpZpzUmzbek7MiLEyTofxx2YS0rJfSOUXX0aZtfQgxcgw7/Re2oGJUsREWZtEF0DzBKCjqH+DzgL6A=="
+ },
+ "tether-shepherd": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/tether-shepherd/-/tether-shepherd-1.8.1.tgz",
+ "integrity": "sha1-T9my/dkFnwS2xCSUVtWuFFo+kiM=",
+ "requires": {
+ "tether": "1.4.3"
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
diff --git a/package.json b/package.json
index 7bc9020..c971818 100644
--- a/package.json
+++ b/package.json
@@ -25,14 +25,14 @@
"prop-types": "15.6.1",
"rc-queue-anim": "^1.4.1",
"rc-tween-one": "1.7.3",
- "react": "^16.2.0",
- "react-dom": "^16.2.0",
+ "react": "^16.3.0",
+ "react-dom": "^16.3.0",
"react-file-reader": "^1.1.4",
"react-fontawesome": "1.6.1",
"react-hot-keys": "1.0.11",
"react-redux": "^5.0.7",
"react-scripts": "1.1.1",
- "react-test-renderer": "^16.2.0",
+ "react-test-renderer": "^16.3.0",
"react-virtualized": "^9.18.5",
"reactstrap": "^5.0.0-beta.3",
"recompose": "0.26.0",
@@ -43,9 +43,11 @@
"reselect": "3.0.1",
"simple-react-validator": "0.0.6",
"styled-components": "3.2.3",
- "lorem-ipsum": "1.0.4"
+ "lorem-ipsum": "1.0.4",
+ "tether-shepherd": "1.8.1"
},
"devDependencies": {
+ "babel-eslint": "8.2.2",
"enzyme": "3.3.0",
"enzyme-adapter-react-16": "1.1.1",
"eslint": "4.19.1",
diff --git a/src/UiConfig.js b/src/UiConfig.js
index aa609c1..eb8ea4c 100644
--- a/src/UiConfig.js
+++ b/src/UiConfig.js
@@ -15,6 +15,13 @@ export default {
id: "co-comment",
name: "CO Comment",
priority: "High",
+ step: {
+ title: "Generate Entry",
+ order: 5,
+ text:
+ "Ok, let’s create a narrative entry, direct from the CO. So, click on the CO Comment button.",
+ position: "left"
+ },
fields: [
{
name: "Comment",
@@ -195,6 +202,13 @@ export default {
priority: "High",
widgets: [
{
+ step: {
+ title: "Interactive controls",
+ order: 8,
+ text:
+ "Instead of plain buttons, some concepts can be represented by dedicated widgets. These indicators are used both to indicate the current state of each mast and to record mast activity. Click on some mast icons, and observe new entries being inserted",
+ position: "right"
+ },
id: "masts",
masts: ["Search", "Radar", "ESM"]
}
diff --git a/src/components/App.js b/src/components/App.js
index 2453807..e2dddd4 100644
--- a/src/components/App.js
+++ b/src/components/App.js
@@ -7,32 +7,88 @@ import LeftPanel from "./LeftPanel";
import PropTypes from "prop-types";
import React from "react";
import RightPanel from "../containers/RightPanel";
+import Tutorial, { Step } from "./Tutorial";
+import styled from "styled-components";
+const WideStep = styled(Step)`
+ width: 50%;
+ max-width: 80% !important;
+`;
const App = ({ expanded, toggleExpand, config }) => (
-