Skip to content

Commit

Permalink
Release/1.7.3 into master (#95)
Browse files Browse the repository at this point in the history
* Upgrade babel dependencies (#39)

* Upgrade babel deps to newest 6.x.x and use preset-env

* Fix mocha tests

* Fix typo

* Select filter with default value (#42)

* Add defaultValue to movie api

* Add default value to filter
Set default value on reset and adapt hasActiveFilter logic to check for default value
Send defaultValue also as value with api call to set initial value
    #32

* Set default filter value on loadTrees (#32)

* Hide clear button if default (#32)

* Feature/travis npm publish (#51)

* set version 1.0.0

* #31 :: npm publish via travis ci

* Display version in development mode (#44)

* Add /api/version to mock API (#34)

* Add version to Header component (#34)

* Load and display version number in development (#34)

* Rename development flag to isDevelopment

* Add "Conquery " to logo title (alt text)

* Use version information from node

* jgitflow added (#53)

* Add Travis selenium tests using Docker (#52)

* .gitignore: nbactions.xml added

* travis install docker compose and activate tests with docker in pom.xml

* Update english localization (#45)

* added eclipse files to gitignore

* updated the Englisch localization file

* Update screenshot

* Add 'babel-polyfill' to have polyfills for IE11 (#48)

* Deploy docker image to Heroku (#58)

* Yarn is part of the node-alpine image

* Apply node docker best practices
http://mherman.org/blog/2017/12/07/dockerizing-a-react-app/

* Ignore some more stuff in docker

* Ignore selenium test node artifacts

* Set public path in production webpack config

* Use port from env or 8000 and don't use package.json start script

* Deploy docker image to heroku

* Add Travis CI and Heroku badges

* Develop

* Upgrade development dependencies (#49)

* Update yaml-loader

* Update webpack-bundle-analyzer

* Upgrade url-loader

* Upgrade timekeeper

* Upgrade style-loader

* Upgrade sass-loader

* Upgrade rimraf

* Upgrade resolve-url-loader (no change, only docs)

* Upgrade redux-mock-store

* Upgrade redux-logger, had breaking change

* Upgrade post-css, add sourceMap true, to use previous css loader source map

* Upgrade node-sass

* Remove json-loader, not neededin webpack >= 2
https://webpack.js.org/guides/migrating/#json-loader-is-not-required-anymore

* Upgrade gulp-babel

* Upgrade flux-standard-action

* Upgrade file-loader

* Upgrade express

* Upgrade body-parser

* Upgrade css-loader

* Upgrade autoprefixer

* Upgrade webpack to 3.11.0

* Fix iteration over concept trees when setting default filter values (#62)

* Fix iteration over concept trees when setting default filter values

* Use const instead of let

* Upgrade to react-hot-loader to v4 (#50)

* Upgrade to react-hot-loader v4

* Update react-hot-loader

* Update to 4.0.0-rc.0

* Update testing environment (#59)

* Execute frontend tests with maven (#54)

* Upgrade autoprefixer to 8 and set browserslistrc

* Upgrade test dependencies

* Replace deprecated compilers flag

* Upgrade eslint and flow dependencies (#60)

* Upgrade eslint packages

* Upgrade flow dependencies

* Add missing PropsType for UploadConceptListModal

* Update flow version in flowconfig

* Fix DatasetIdType import

* Upgrade flow-bin

* Upgrade eslint dependencies

* Upgrade frontend dependencies (#63)

* Upgrade dev dependencies

* Upgrade to React 16 + dependencies

* Add cross-env for windows env var support

* Never ending updates

* add tooltip to version header (#66)

* add tooltip to version header

* Update Header.js

* Feature/deployment (#70)

* Project name - Rename Conquery Test to Conquery Selenium Test closes #67

* Reproducible Dependencies closes #68

* Setting org scope when publish closes #69

* Update package.json

* Query Node Editor higher-order component (#71)

* Rename QueryNodeModal -> QueryNodeEditor, refactor interface as HOC

* Adapt tests

* Clean up

* Fix IE text selection not working when draggable (#57)

* Upgrade react-dnd

* Only draggable when not editing. Fixes (#56)

* Re-add Form Query Node Editor (#74)

* Add form components for Query and Concept fields, using FormQueryNodeEditor

* Fix prop type validation, add some padding between form elements

* Don't destroy form state on unmount, style fixes

* Fix code style

* Load CSS from 3rd party package installations (#75)

* Load CSS from 3rd party package installations

* Ignore style includes when testing

* Handle undefined values in emptiness-check of InputRange (#73)

* prepare release 1.7.0-RC3

* fix position of div(react-datepicker-popper) in IE 11 (#78)

* prepare release 1.7.0-RC7

* prepare release 1.7.0

* update npm publish

* travis execute failed status 123

* set wrong frontend version

* Omit exclude flag when not excluding instead of setting it to null (#87)

* prepare release 1.7.3
  • Loading branch information
MarcusBaitz committed Mar 26, 2018
1 parent 54c0c31 commit 91a96dc
Show file tree
Hide file tree
Showing 102 changed files with 2,891 additions and 2,409 deletions.
10 changes: 8 additions & 2 deletions .gitignore
Expand Up @@ -7,6 +7,11 @@
# BlueJ files
*.ctxt

# Eclipse files
*/.project
*/.classpath
*/.settings

# Mobile Tools for Java (J2ME)
.mtj.tmp/

Expand All @@ -21,7 +26,8 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/conqueryfrontendtest/target/
/tests/target/
/frontend/target/
/frontend/node/
/frontend/cfp-*
/frontend/cfp-*
nbactions.xml
/selenium-test/target/
37 changes: 24 additions & 13 deletions .travis.yml
@@ -1,18 +1,29 @@
sudo: required
language: java

env:
- DOCKER_COMPOSE_VERSION=1.18.0

before_install:
- sudo rm /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin

cache:
directories:
- "$HOME/.m2"
- "${TRAVIS_BUILD_DIR}/frontend/node_modules"
services:
- docker
- "$TRAVIS_BUILD_DIR/frontend/node_modules"

deploy:
provider: npm
api_key:
secure: J7Ex3ckORAy9SwZigYqR8Dn4h75ZAtx+yR64g36EbHZA4Od8i+tRKF7Li1KZjYBfqfk/ZOEf6eWDFMo2w50DKJjdmRwAtLkhgEMrNIuTdreKcPAlagD6dhdVaz6e9VwlirRQBY/2fc5NJvIBWHxWueapVH2RAt2/vz8OFfIRkzh3Ga8d2JiJhDot1naxgf1PzDRsFQMAwnzjnk11vN2Ge/ZA9xqcdjw2MhggVAqf5gwsdKKuzjYRZkq2/ef3yyE6lZds6GMhmzKfkQevObGoppWMUCEhu1yjEwwCDGNXGWXmmh8A+Y4hglAKW9Q66Gry0p3ly3yBq6BOd9aVNnYam++TK+jxKdbN0iuEpuLuFNF4Bp7+cO7kgfI0+bS0etKAWmB9zLfHm2VVAfCl5mh4Z97XgbRE8Qm35nh5f1E+tmyV21DAaJm8k0nwoHaEu9RTBM2CTV5Xx0qTPJsk2OEw74L6WAfLPUIoV/L5qcsH0Cm3HfaLl+tZlwlR8Alu/uf/53EmFyBtGnxDvJcyBiS+CXxAD9VF594amVdrDBQbILRVbQV9vRg/43L2KWJcHTRGq+N73R/KvP8ibTYyxDZImP3VlKjGo6itRhfbwzzFoZXbX//UtY510UgAZRT2Ld43bQjqm0rPuoe66s4XavKgJT8yeK0t64t1QXQ5n4BJ5Ag=
file_glob: true
file: "${TRAVIS_BUILD_DIR}/frontend/conquery-*.tgz"
skip_cleanup: true
on:
repo: bakdata/conquery
tags: true
- provider: script
script: bash frontend/scripts/deploy-npm.sh
on:
tags: true
- provider: script
script: bash frontend/scripts/deploy-heroku-docker.sh conquery-dev
on:
branch: develop
- provider: script
script: bash frontend/scripts/deploy-heroku-docker.sh conquery
on:
branch: master
6 changes: 5 additions & 1 deletion README.md
@@ -1,9 +1,13 @@
# Conquery
*fast & efficient Analysis*
<a target=“_blank” href="https://travis-ci.org/bakdata/conquery"><img align="right" alt="Build Status" src ="https://travis-ci.org/bakdata/conquery.svg?branch=master"></a>

![conquery Screenshot](images/screenshot.png)

Branch | Travis CI | Heroku
------ | ---------- | ------
master | [![Build Status](https://travis-ci.org/bakdata/conquery.svg?branch=master)](https://travis-ci.org/bakdata/conquery) | [![Heroku](https://heroku-badge.herokuapp.com/?app=conquery)](https://conquery.herokuapp.com/) |
develop | [![Build Status](https://travis-ci.org/bakdata/conquery.svg?branch=develop)](https://travis-ci.org/bakdata/conquery) | [![Heroku](https://heroku-badge.herokuapp.com/?app=conquery-dev)](https://conquery-dev.herokuapp.com/) |

Conquery provides a powerful web-based platform to compose and execute queries against large event-like data sets.

Event data sets typically associate events with a certain subject (i.e. a person or a physical object). One common use case for the data is to identify groups of similar subjects based on the assumption that they share similar events in a given time frame.
Expand Down
8 changes: 4 additions & 4 deletions frontend/.babelrc
Expand Up @@ -2,17 +2,17 @@
"env": {
"development": {
"presets": [
["es2015", {"modules": false}],
"stage-0",
["env", {"modules": false}],
"stage-1",
"react"
],
"plugins": ["react-hot-loader/babel"]
},
"test": {
"presets": ["es2015", "stage-0", "react" ]
"presets": ["env", "stage-1", "react" ]
},
"production": {
"presets": ["es2015", "stage-0", "react" ]
"presets": ["env", "stage-1", "react" ]
}
}
}
6 changes: 6 additions & 0 deletions frontend/.browserslistrc
@@ -0,0 +1,6 @@
# browserslist defaults and explicitly set IE 11 (should be included in > 0.5%)
> 0.5%
last 2 versions
Firefox ESR
not dead
IE 11
5 changes: 5 additions & 0 deletions frontend/.dockerignore
@@ -1,4 +1,9 @@
node_modules
dist
.coverage
.nyc_output
node

*.log
pom.xml
README.md
2 changes: 1 addition & 1 deletion frontend/.flowconfig
Expand Up @@ -17,4 +17,4 @@ module.name_mapper='.*\(.yml\)' -> 'empty/object'
; suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe

[version]
0.56.0
0.65.0
18 changes: 8 additions & 10 deletions frontend/Dockerfile
@@ -1,16 +1,14 @@
FROM node:8.9-alpine

EXPOSE 8000
RUN mkdir /conquery
WORKDIR /conquery

RUN npm set progress=false && \
npm install -g yarn && \
mkdir conquery
COPY ./package.json ./yarn.lock ./
RUN yarn --no-progress

COPY ./package.json ./yarn.lock /conquery/
RUN cd /conquery && \
yarn
COPY . .
RUN yarn run build-app

COPY . /conquery
RUN cd /conquery && yarn run build-app
CMD NODE_ENV=production node app/server

CMD cd /conquery && yarn run start-production && tail -f /dev/null
EXPOSE 8000
1 change: 1 addition & 0 deletions frontend/app/api/concepts.json
Expand Up @@ -106,6 +106,7 @@
"label": "Picture Format",
"type": "SELECT",
"description": "The original picture format",
"defaultValue": "hdtv",
"options": [
{
"value": "sdtv",
Expand Down
15 changes: 14 additions & 1 deletion frontend/app/api/index.js
@@ -1,4 +1,5 @@
const path = require('path');
const version = require('../../package.json').version;

// Taken from:
// http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
Expand Down Expand Up @@ -208,5 +209,17 @@ module.exports = function (app, port) {
});
}, 500);
}
)
);

/*
VERSION
*/
app.get('/api/version', function(req, res) {
res.setHeader('Content-Type', 'application/json');

res.send({
version: version,
isDevelopment: process.env.NODE_ENV !== 'production'
})
});
};
2 changes: 1 addition & 1 deletion frontend/app/server.js
Expand Up @@ -7,7 +7,7 @@ var bodyParser = require('body-parser');
var mountApi = require('./api');

var isDeveloping = process.env.NODE_ENV !== 'production';
var port = isDeveloping ? 8000 : process.env.PORT;
var port = (process.env.PORT || 8000);
var app = express();

// body parser must be set up before routes are attached
Expand Down
38 changes: 37 additions & 1 deletion frontend/app/src/js/forms/example-form/ExampleForm.js
Expand Up @@ -10,6 +10,14 @@ import {
InputWithLabel
} from '../../../../../lib/js/form-components';

import {
FormQueryDropzone
} from '../../../../../lib/js/external-forms/form-query-dropzone';

import {
FormConceptGroup
} from '../../../../../lib/js/external-forms/form-concept-group';

import {
validateRequired
} from '../../../../../lib/js/external-forms/validators';
Expand All @@ -18,13 +26,17 @@ import {
selectReduxFormState
} from '../../../../../lib/js/external-forms/stateSelectors';

import type {
ExternalFormPropsType
} from '../../../../../lib/js/external-forms/types';

import { type } from './formType';

type PropsType = {
onSubmit: Function,
};

const ExampleForm = (props: PropsType) => {
const ExampleForm = (props: ExternalFormPropsType | PropsType) => {
return (
<form className="example-form">
<h3>{T.translate('externalForms.exampleForm.headline')}</h3>
Expand All @@ -36,6 +48,27 @@ const ExampleForm = (props: PropsType) => {
label: T.translate('common.title'),
}}
/>
<Field
name="example_query"
component={FormQueryDropzone}
props={{
label: T.translate('externalForms.exampleForm.exampleQuery'),
dropzoneText: T.translate('externalForms.exampleForm.exampleQueryDropzone'),
}}
/>
<Field
name="example_concepts"
component={FormConceptGroup}
props={{
name: 'example_concepts',
label: T.translate('externalForms.exampleForm.exampleConcepts'),
conceptDropzoneText: T.translate('externalForms.exampleForm.exampleConceptDropzone'),
attributeDropzoneText: T.translate('externalForms.exampleForm.exampleAttributeDropzone'),
datasetId: props.selectedDatasetId,
formType: type,
newValue: { concepts: [] }
}}
/>
</form>
);
};
Expand All @@ -45,7 +78,10 @@ export default reduxForm({
getFormState: selectReduxFormState,
initialValues: {
text: '',
example_query: null,
example_concepts: []
},
destroyOnUnmount: false,
validate: (values) => ({
text: validateRequired(values.text),
})
Expand Down
3 changes: 2 additions & 1 deletion frontend/app/src/js/forms/example-form/formType.js
@@ -1,3 +1,4 @@
// @flow

export const type = 'example';
// By convention, form identifiers are all-uppercase
export const type = 'EXAMPLE_FORM';
17 changes: 16 additions & 1 deletion frontend/app/src/js/forms/example-form/reducer.js
@@ -1,3 +1,18 @@
// @flow

export default (state = {}) => state;
import { combineReducers } from 'redux';

import {
createFormQueryNodeEditorReducer
} from '../../../../../lib/js/external-forms/form-query-node-editor';

import {
createFormSuggestionsReducer
} from '../../../../../lib/js/external-forms/form-suggestions/reducer';

import { type } from './formType';

export default combineReducers({
example_concepts: createFormQueryNodeEditorReducer(type, 'example_concepts'),
suggestions: createFormSuggestionsReducer(type, ['example_concepts']),
});
5 changes: 5 additions & 0 deletions frontend/app/src/localization/de.yml
@@ -1,3 +1,8 @@
externalForms:
exampleForm:
headline: "Beispielformular"
exampleQuery: "Beispiel-Abfragefeld"
exampleQueryDropzone: "Füge eine Gruppe aus einer früheren Anfrage hinzu"
exampleConcepts: "Beispiel-Konzeptfeld"
exampleConceptDropzone: "Füge ein Attribut zur Gruppe hinzu"
exampleAttributeDropzone: "Füge ein Attribut hinzu"
5 changes: 5 additions & 0 deletions frontend/app/src/localization/en.yml
@@ -1,3 +1,8 @@
externalForms:
exampleForm:
headline: "Example form"
exampleQuery: "Example Query Field"
exampleQueryDropzone: "Add a group from a previous query"
exampleConcepts: "Example Concept Field"
exampleConceptDropzone: "Add an attribute to the group"
exampleAttributeDropzone: "Add an attribute"
4 changes: 4 additions & 0 deletions frontend/app/webpack.common.config.js
Expand Up @@ -27,6 +27,10 @@ module.exports = Object.assign({}, ...['en', 'de'].map(lang => ({
}, {
test: /\.(ttf|eot|svg|png|jpg|woff(2)?)(\?.*$|$)/,
loader: "file-loader?name=[name].[ext]"
}, {
test: /\.css$/,
loaders: ['style-loader', 'css-loader'],
include: /(\/node_modules\/)/
}]
}
}
Expand Down
4 changes: 2 additions & 2 deletions frontend/app/webpack.config.js
Expand Up @@ -10,7 +10,7 @@ module.exports = ['en', 'de'].map(lang => ({
devtool: 'eval-source-map',
entry: {
main: [
'react-hot-loader/patch',
'babel-polyfill',
'webpack-hot-middleware/client?reload=true',
path.join(__dirname, `src/js/main.${lang}.js`)
]
Expand All @@ -37,7 +37,7 @@ module.exports = ['en', 'de'].map(lang => ({
loaders: [
'style-loader',
'css-loader',
'postcss-loader',
{ loader: 'postcss-loader', options: { sourceMap: true } },
'resolve-url-loader',
{
loader: 'sass-loader',
Expand Down
10 changes: 7 additions & 3 deletions frontend/app/webpack.production.config.js
Expand Up @@ -9,11 +9,15 @@ module.exports = ['en', 'de'].map(lang => ({
...commonConfig[lang],
name: lang,
entry: {
main: path.join(__dirname, `src/js/main.${lang}.js`)
main: [
'babel-polyfill',
path.join(__dirname, `src/js/main.${lang}.js`)
]
},
output: {
path: path.join(__dirname, '/dist/'),
filename: `[name]-[hash].${lang}.min.js`
filename: `[name]-[hash].${lang}.min.js`,
publicPath: '/'
},
plugins: [
...commonConfig[lang].plugins,
Expand Down Expand Up @@ -42,7 +46,7 @@ module.exports = ['en', 'de'].map(lang => ({
fallback: 'style-loader',
use: [
'css-loader',
'postcss-loader',
{ loader: 'postcss-loader', options: { sourceMap: true } },
'resolve-url-loader',
{
loader: 'sass-loader',
Expand Down
3 changes: 2 additions & 1 deletion frontend/lib/js/AppRoot.js
Expand Up @@ -2,6 +2,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Provider } from 'react-redux';
import { hot } from 'react-hot-loader'

import AppRouter from './app/AppRouter';

Expand All @@ -16,4 +17,4 @@ AppRoot.propTypes = {
browserHistory: PropTypes.object.isRequired,
};

export default AppRoot;
export default hot(module)(AppRoot);
4 changes: 4 additions & 0 deletions frontend/lib/js/api/api.js
Expand Up @@ -62,6 +62,10 @@ function fetchJson(url: string, request?: RequestType, rawBody?: boolean = false
return fetchJsonUnauthorized(url, finalRequest, rawBody);
}

export function getVersion() {
return fetchJson(apiUrl() + '/version')
}

export function getDatasets() {
return fetchJson(apiUrl() + `/datasets`);
}
Expand Down

0 comments on commit 91a96dc

Please sign in to comment.