Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
84e48ca
Add files via upload
invincibleyolk Aug 19, 2021
6e095a3
Update readme.md
invincibleyolk Aug 19, 2021
de72f0f
Update readme.md
invincibleyolk Aug 19, 2021
de04704
Update readme.md
invincibleyolk Aug 19, 2021
6cac609
Update readme.md
invincibleyolk Aug 19, 2021
6786c59
Update readme.md
invincibleyolk Aug 19, 2021
85bde8b
init react
invincibleyolk Aug 22, 2021
fa9431d
add packages
Aug 22, 2021
4bf6e43
add packages
Aug 22, 2021
31d77a8
fix bug
Aug 22, 2021
8226941
Add files via upload
Aug 22, 2021
655e7f0
enable less; jest tested;
Aug 22, 2021
4456e32
Merge branch 'main' of https://github.com/visual-heuristics/frontend-…
Aug 22, 2021
cc5b174
test ci
Aug 22, 2021
b142241
test
Aug 22, 2021
ebebe6d
Merge pull request #1 from visual-heuristics/feature/ci-test
invincibleyolk Aug 22, 2021
a86325a
Merge pull request #2 from visual-heuristics/release
invincibleyolk Aug 25, 2021
8bbd77b
add router; add a template;
invincibleyolk Aug 25, 2021
c7c9102
fix: test bugs
invincibleyolk Aug 25, 2021
0fe16ec
test travis
invincibleyolk Aug 25, 2021
44c9a55
Update .travis.yml
invincibleyolk Aug 25, 2021
fe43b37
UI develop
Sep 4, 2021
fb4cd8c
styles
Sep 4, 2021
e586650
app file styles changed
Sep 4, 2021
e20e256
global styles
Sep 4, 2021
6fcf9a0
Merge pull request #4 from visual-heuristics/feat_globalStyles
invincibleyolk Sep 4, 2021
3a7b26b
UI-CSS
mezm94 Sep 6, 2021
a01617a
UI-CSS
mezm94 Sep 6, 2021
69942f4
Update index1.js
mezm94 Sep 6, 2021
0cc8d60
add block image
Aug 27, 2021
1066139
add block world visualization
Sep 6, 2021
f01f60d
nav bar and home page
invincibleyolk Sep 7, 2021
70854b0
page 2 upload VFG
Sep 7, 2021
1f63979
add subgoal with interactions
shelley-zsq Sep 8, 2021
73bdc30
Merge pull request #5 from visual-heuristics/feat_visualization
shelley-zsq Sep 10, 2021
f946313
fix merge conflicts
Sep 11, 2021
627601a
adjust the display of claw and blocks
mezm94 Sep 12, 2021
ab0a34a
adjust css
mezm94 Sep 12, 2021
9a84aad
add controllers
mezm94 Sep 12, 2021
aae75e1
Add previous/next step & show final goal
mezm94 Sep 12, 2021
5c8581c
fix the getSubGoal()
mezm94 Sep 13, 2021
ab426c0
add the interaction between steps and subgoal(changing background col…
shelley-zsq Sep 14, 2021
06d2f07
initial animation
shelley-zsq Sep 15, 2021
7b6ea59
advanced animation
shelley-zsq Sep 15, 2021
7142c52
add start/pause/showTheGoal button event
shelley-zsq Sep 15, 2021
13b1715
add click effect to play and pause button
mezm94 Sep 15, 2021
2705889
fix play/pause effect
mezm94 Sep 15, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build
/prototypes
/data samples
/docs
/tests
/planimationLibrary.js

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

#documents
/prototypes
/data samples
/docs
15 changes: 15 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
language: node_js
node_js:
- 14
branchs:
only:
- master
- develop
cache:
directories:
- node_modules
install:
- yarn install
scripts:
- yarn test
- CI=false yarn build
25 changes: 21 additions & 4 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,25 @@ The initial work of Planimation JS Library, and the frontend is waiting to be de
- [RequireJS] - RequireJS is a JavaScript file and module loader

## Run the demo
In the root folder:
```sh
npm install http-server -g
http-server
Open the working directory with VS code, in the terminal:
```
yarn //or “npm install”
```
This command will automatically install all the packages you need in this project.

Run the demo:
```
npm run start
```
This will open a page on your browser, and you should see a jumping rabbit like this:



Now, the development environment is all set up! Start coding😊

Test your code:
```
yarn test //or “npm test”
```
Open the link in your browser, and you should see a visualisation of block world .

Expand All @@ -33,6 +48,8 @@ When you develop the new features for Planimation JS Libary, please try to modul
* Pixi JS - https://www.pixijs.com/
* Pixi JS Tutorial - https://github.com/kittykatattack/learningPixi
* Pixi JS Demos - https://pixijs.io/examples/#/demos-basic/container.js
* ReactPixi - https://reactpixi.org/
* React - https://reactjs.org/docs/getting-started.html

[PIXIJS]: <https://www.pixijs.com/>
[RequireJS]:<https://requirejs.org/>
106 changes: 106 additions & 0 deletions config/env.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
'use strict';

const fs = require('fs');
const path = require('path');
const paths = require('./paths');

// Make sure that including paths.js after env.js will read .env variables.
delete require.cache[require.resolve('./paths')];

const NODE_ENV = process.env.NODE_ENV;
if (!NODE_ENV) {
throw new Error(
'The NODE_ENV environment variable is required but was not specified.'
);
}

// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
const dotenvFiles = [
`${paths.dotenv}.${NODE_ENV}.local`,
// Don't include `.env.local` for `test` environment
// since normally you expect tests to produce the same
// results for everyone
NODE_ENV !== 'test' && `${paths.dotenv}.local`,
`${paths.dotenv}.${NODE_ENV}`,
paths.dotenv,
].filter(Boolean);

// Load environment variables from .env* files. Suppress warnings using silent
// if this file is missing. dotenv will never modify any environment variables
// that have already been set. Variable expansion is supported in .env files.
// https://github.com/motdotla/dotenv
// https://github.com/motdotla/dotenv-expand
dotenvFiles.forEach(dotenvFile => {
if (fs.existsSync(dotenvFile)) {
require('dotenv-expand')(
require('dotenv').config({
path: dotenvFile,
})
);
}
});

// We support resolving modules according to `NODE_PATH`.
// This lets you use absolute paths in imports inside large monorepos:
// https://github.com/facebook/create-react-app/issues/253.
// It works similar to `NODE_PATH` in Node itself:
// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
// Otherwise, we risk importing Node.js core modules into an app instead of webpack shims.
// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
// We also resolve them to make sure all tools using them work consistently.
const appDirectory = fs.realpathSync(process.cwd());
process.env.NODE_PATH = (process.env.NODE_PATH || '')
.split(path.delimiter)
.filter(folder => folder && !path.isAbsolute(folder))
.map(folder => path.resolve(appDirectory, folder))
.join(path.delimiter);

// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
// injected into the application via DefinePlugin in webpack configuration.
const REACT_APP = /^REACT_APP_/i;

function getClientEnvironment(publicUrl) {
const raw = Object.keys(process.env)
.filter(key => REACT_APP.test(key))
.reduce(
(env, key) => {
env[key] = process.env[key];
return env;
},
{
// Useful for determining whether we’re running in production mode.
// Most importantly, it switches React into the correct mode.
NODE_ENV: process.env.NODE_ENV || 'development',
// Useful for resolving the correct path to static assets in `public`.
// For example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />.
// This should only be used as an escape hatch. Normally you would put
// images into the `src` and `import` them in code to get their paths.
PUBLIC_URL: publicUrl,
// We support configuring the sockjs pathname during development.
// These settings let a developer run multiple simultaneous projects.
// They are used as the connection `hostname`, `pathname` and `port`
// in webpackHotDevClient. They are used as the `sockHost`, `sockPath`
// and `sockPort` options in webpack-dev-server.
WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST,
WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH,
WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT,
// Whether or not react-refresh is enabled.
// react-refresh is not 100% stable at this time,
// which is why it's disabled by default.
// It is defined here so it is available in the webpackHotDevClient.
FAST_REFRESH: process.env.FAST_REFRESH !== 'false',
}
);
// Stringify all values so we can feed into webpack DefinePlugin
const stringified = {
'process.env': Object.keys(raw).reduce((env, key) => {
env[key] = JSON.stringify(raw[key]);
return env;
}, {}),
};

return { raw, stringified };
}

module.exports = getClientEnvironment;
66 changes: 66 additions & 0 deletions config/getHttpsConfig.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
'use strict';

const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
const chalk = require('react-dev-utils/chalk');
const paths = require('./paths');

// Ensure the certificate and key provided are valid and if not
// throw an easy to debug error
function validateKeyAndCerts({ cert, key, keyFile, crtFile }) {
let encrypted;
try {
// publicEncrypt will throw an error with an invalid cert
encrypted = crypto.publicEncrypt(cert, Buffer.from('test'));
} catch (err) {
throw new Error(
`The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}`
);
}

try {
// privateDecrypt will throw an error with an invalid key
crypto.privateDecrypt(key, encrypted);
} catch (err) {
throw new Error(
`The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${
err.message
}`
);
}
}

// Read file and throw an error if it doesn't exist
function readEnvFile(file, type) {
if (!fs.existsSync(file)) {
throw new Error(
`You specified ${chalk.cyan(
type
)} in your env, but the file "${chalk.yellow(file)}" can't be found.`
);
}
return fs.readFileSync(file);
}

// Get the https config
// Return cert files if provided in env, otherwise just true or false
function getHttpsConfig() {
const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env;
const isHttps = HTTPS === 'true';

if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) {
const crtFile = path.resolve(paths.appPath, SSL_CRT_FILE);
const keyFile = path.resolve(paths.appPath, SSL_KEY_FILE);
const config = {
cert: readEnvFile(crtFile, 'SSL_CRT_FILE'),
key: readEnvFile(keyFile, 'SSL_KEY_FILE'),
};

validateKeyAndCerts({ ...config, keyFile, crtFile });
return config;
}
return isHttps;
}

module.exports = getHttpsConfig;
29 changes: 29 additions & 0 deletions config/jest/babelTransform.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';

const babelJest = require('babel-jest');

const hasJsxRuntime = (() => {
if (process.env.DISABLE_NEW_JSX_TRANSFORM === 'true') {
return false;
}

try {
require.resolve('react/jsx-runtime');
return true;
} catch (e) {
return false;
}
})();

module.exports = babelJest.createTransformer({
presets: [
[
require.resolve('babel-preset-react-app'),
{
runtime: hasJsxRuntime ? 'automatic' : 'classic',
},
],
],
babelrc: false,
configFile: false,
});
14 changes: 14 additions & 0 deletions config/jest/cssTransform.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
'use strict';

// This is a custom Jest transformer turning style imports into empty objects.
// http://facebook.github.io/jest/docs/en/webpack.html

module.exports = {
process() {
return 'module.exports = {};';
},
getCacheKey() {
// The output is always the same.
return 'cssTransform';
},
};
40 changes: 40 additions & 0 deletions config/jest/fileTransform.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
'use strict';

const path = require('path');
const camelcase = require('camelcase');

// This is a custom Jest transformer turning file imports into filenames.
// http://facebook.github.io/jest/docs/en/webpack.html

module.exports = {
process(src, filename) {
const assetFilename = JSON.stringify(path.basename(filename));

if (filename.match(/\.svg$/)) {
// Based on how SVGR generates a component name:
// https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6
const pascalCaseFilename = camelcase(path.parse(filename).name, {
pascalCase: true,
});
const componentName = `Svg${pascalCaseFilename}`;
return `const React = require('react');
module.exports = {
__esModule: true,
default: ${assetFilename},
ReactComponent: React.forwardRef(function ${componentName}(props, ref) {
return {
$$typeof: Symbol.for('react.element'),
type: 'svg',
ref: ref,
key: null,
props: Object.assign({}, props, {
children: ${assetFilename}
})
};
}),
};`;
}

return `module.exports = ${assetFilename};`;
},
};
Loading