function mapStateToProps(state) {
return {
workflowId: getWorkflowId(state),
- versionBaseId: getLatestBaseId(state)
+ baseVersionId: getLatestBaseId(state)
};
}
submitNewVersion({
description: this.state.newVersion.description,
workflowId: workflowId,
- baseVersionId: baseVersionId || null,
+ baseId: baseVersionId || null,
history: history
});
};
--- /dev/null
+/*
+* Copyright © 2018 European Support Limited
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+
+import CreateVersionView from '../CreateVersionView';
+
+describe('Create new version snapshot', () => {
+ it('renders correctly', () => {
+ const tree = renderer.create(<CreateVersionView />).toJSON();
+
+ expect(tree).toMatchSnapshot();
+ });
+});
--- /dev/null
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Create new version snapshot renders correctly 1`] = `
+<form
+ onSubmit={[Function]}
+>
+ <div
+ className="new-version-page custom-modal-wrapper "
+ >
+ <div
+ className="select-wrapper version-selector sdc-input"
+ >
+ <label>
+ category
+ </label>
+ <select
+ className="inputinput-selector"
+ data-test-id="vc-select-box"
+ disabled={true}
+ value={undefined}
+ >
+ <option
+ data-test-id="vc-option"
+ value="2"
+ >
+ Major
+ </option>
+ <option
+ data-test-id="vc-option"
+ value="1"
+ >
+ Minor
+ </option>
+ </select>
+ </div>
+ <div
+ className="description-part"
+ >
+ <div
+ className="sdc-input"
+ >
+ <div
+ className="sdc-input__label"
+ >
+ description
+ </div>
+ <textarea
+ className="field-section sdc-input__input"
+ data-test-id="new-version-description"
+ onChange={[Function]}
+ value={undefined}
+ />
+ </div>
+ </div>
+ <div
+ className="modal-action-bar"
+ >
+ <button
+ className="sdc-button sdc-button__primary "
+ disabled={false}
+ onClick={undefined}
+ >
+ createBtn
+ </button>
+ <button
+ className="sdc-button sdc-button__secondary "
+ disabled={false}
+ onClick={undefined}
+ >
+ closeBtn
+ </button>
+ </div>
+ </div>
+</form>
+`;
import {
getGeneralDescription,
getCreationTime,
- getMofificationTime
+ getModificationTime
} from 'features/version/general/generalSelectors';
import { workflowVersionDetailsChangedAction } from 'features/version/versionConstants';
return {
description: getGeneralDescription(state),
created: getCreationTime(state),
- modified: getMofificationTime(state)
+ modified: getModificationTime(state)
};
}
import React from 'react';
import PropTypes from 'prop-types';
-import { Translate } from 'react-redux-i18n';
+import { I18n, Localize, Translate } from 'react-redux-i18n';
import Description from 'shared/components/Description';
-import { VersionInfo } from 'shared/components/VersionInfo';
+import { VersionInfo, LabeledValue } from 'shared/components/VersionInfo';
const GeneralView = ({ onDataChange, description, created, modified }) => (
<div className="general-page">
description={description}
onDataChange={onDataChange}
/>
- <VersionInfo modified={modified} created={created} />
+ <VersionInfo>
+ <LabeledValue
+ title={I18n.t('workflow.general.modified')}
+ value={
+ <Localize value={modified} dateFormat="date.short" />
+ }
+ />
+ <LabeledValue
+ title={I18n.t('workflow.general.created')}
+ value={<Localize value={created} dateFormat="date.short" />}
+ />
+ </VersionInfo>
</div>
</div>
);
state && state.currentVersion.general.description;
export const getVersionInfo = state => state && state.currentVersion.general;
-export const getVersionsState = createSelector(
- state => state && state.currentVersion.general.state
-);
-
export const getCreationTime = state =>
state && state.currentVersion.general.creationTime;
-export const getMofificationTime = state =>
+export const getModificationTime = state =>
state && state.currentVersion.general.modificationTime;
-export const generalParamsSelector = createSelector(
- getGeneralDescription,
- description => {
- return {
- description
- };
- }
+export const getVersionsState = createSelector(
+ state => state && state.currentVersion.general.state
);
fetchVersion: ({ workflowId, versionId }) => {
return RestfulAPIUtil.fetch(`${baseUrl(workflowId)}/${versionId}`);
},
- createNewVersion: ({ workflowId, baseVersionId, description }) => {
- return RestfulAPIUtil.post(baseUrl(workflowId), {
- baseVersionId,
+ createNewVersion: ({ workflowId, baseId, description }) => {
+ const urlParams = baseId ? `?baseVersionId=${baseId}` : ``;
+ return RestfulAPIUtil.post(`${baseUrl(workflowId)}${urlParams}`, {
description
});
},
updateVersion: ({ workflowId, ...payload }) => {
return RestfulAPIUtil.put(
- `${baseUrl(workflowId)}${payload.params.id}`,
+ `${baseUrl(workflowId)}/${payload.params.id}`,
{
...payload.params
}
*/
import { connect } from 'react-redux';
-import {
- getVersionsList,
- getSavedObjParams
-} from 'features/version/versionController/versionControllerSelectors';
+import { getSavedObjParams } from 'features/version/versionController/versionControllerSelectors';
import VersionControllerView from 'features/version/versionController/VersionControllerView';
-import { getVersions } from 'features/workflow/overview/overviewSelectors';
+import {
+ getVersions,
+ getSortedVersions
+} from 'features/workflow/overview/overviewSelectors';
import {
getWorkflowId,
getWorkflowName
saveParamsAction,
certifyVersionAction
} from 'features/version/versionController/versionControllerConstants';
+import { workflowVersionFetchRequestedAction } from '../versionConstants';
function mapStateToProps(state) {
return {
workflowName: getWorkflowName(state),
workflowId: getWorkflowId(state),
- versionsList: getVersionsList(state),
+ versionsList: getSortedVersions(state),
savedParams: getSavedObjParams(state),
- currentWorkflowVersion: state.currentVersion.general.id,
+ currentWorkflowVersion: state.currentVersion.general,
versionState: state.currentVersion.general.state
};
}
function mapDispatchToProps(dispatch) {
return {
- callForAction: (action, payload) =>
- dispatch({ type: action, payload: payload }),
getVersions: () => dispatch(getVersions),
saveParamsToServer: params => dispatch(saveParamsAction(params)),
- certifyVersion: payload => dispatch(certifyVersionAction(payload))
+ certifyVersion: payload => dispatch(certifyVersionAction(payload)),
+ changeVersion: payload =>
+ dispatch(workflowVersionFetchRequestedAction(payload))
};
}
static propTypes = {
location: PropTypes.object,
workflowName: PropTypes.string,
- currentWorkflowVersion: PropTypes.string,
+ currentWorkflowVersion: PropTypes.object,
viewableVersions: PropTypes.arrayOf(Object),
- callForAction: PropTypes.func,
getVersions: PropTypes.func,
versionsList: PropTypes.array,
history: PropTypes.object,
saveParamsToServer: PropTypes.func,
workflowId: PropTypes.string,
versionState: PropTypes.string,
- certifyVersion: PropTypes.func
+ certifyVersion: PropTypes.func,
+ changeVersion: PropTypes.func
};
constructor(props) {
super(props);
}
- dynamicDispatcher = (action, payload) => {
- const { history, callForAction } = this.props;
- const actionName =
- typeof action === 'object'
- ? action.target.attributes.actionType.value
- : action;
- let pageName = history.location.pathname.split('/').pop();
- callForAction(pageName + '/' + actionName, payload);
- };
-
routeToOverview = () => {
const { history, match } = this.props;
const workflowId = match.params.workflowId;
workflowId,
currentWorkflowVersion
} = this.props;
- certifyVersion({ workflowId, versionId: currentWorkflowVersion });
+ certifyVersion({ workflowId, versionId: currentWorkflowVersion.id });
+ };
+
+ versionChangeCallback = versionId => {
+ const { changeVersion, workflowId } = this.props;
+ changeVersion({ versionId, workflowId });
};
render() {
currentWorkflowVersion={currentWorkflowVersion}
viewableVersions={versionsList}
onOverviewClick={this.routeToOverview}
+ onVersionSelectChange={this.versionChangeCallback}
/>
<ActionButtons
onSaveClick={this.sendSaveParamsToServer}
}
VersionControllerView.defaultProps = {
- getVersions: () => {},
- callForAction: () => {}
+ getVersions: () => {}
};
}
];
const tree = renderer
- .create(<VersionControllerView viewableVersions={versionList} />)
+ .create(
+ <VersionControllerView
+ viewableVersions={versionList}
+ currentWorkflowVersion={versionList[0]}
+ />
+ )
.toJSON();
expect(tree).toMatchSnapshot();
className="version-selector"
data-test-id="vc-versions-select-box"
onChange={[Function]}
- value={undefined}
+ value="7b5f6b086613470985082df2c0f6c713"
/>
<span
className="version-selector-more-versions"
import { createAction } from 'redux-actions';
export const SAVE_ACTION = 'versionController/SAVE';
export const CERTIFY_ACTION = 'versionController/CERTIFY';
-export const SET_VERSIONS_LIST = 'versionController/SET_VERSIONS_LIST';
-export const UNDO_ACTION = 'UNDO';
+export const UNDO_ACTION = 'versionController/UNDO';
export const CERTIFY_JSON = {
name: 'CERTIFIED'
};
const {
currentWorkflowVersion,
viewableVersions,
- dynamicDispatcher
+ onVersionSelectChange
} = props;
function onChangeHandler(ev) {
key => viewableVersions[key].id === ev.target.value
);
const currentVersion = viewableVersions[versionIndex].id;
- dynamicDispatcher('CHANGE_VERSION', currentVersion);
- return currentVersion;
+ onVersionSelectChange(currentVersion);
}
return (
<select
className="version-selector"
key={'selector'}
- value={currentWorkflowVersion}
+ value={currentWorkflowVersion.id}
onChange={onChangeHandler}
data-test-id="vc-versions-select-box">
{!isEmpty(viewableVersions) &&
viewableVersions.map(item => {
+ const displayedName = `${item.name} ${
+ currentWorkflowVersion.id === item.id
+ ? currentWorkflowVersion.state.toUpperCase()
+ : item.state
+ }`;
return (
<option
key={'versionSelect' + item.id}
value={item.id}
data-test-id="vc-version-option">
- {item.displayed || item.name}
+ {displayedName}
</option>
);
})}
};
VersionSelect.propTypes = {
- currentWorkflowVersion: PropTypes.string,
+ currentWorkflowVersion: PropTypes.object,
viewableVersions: PropTypes.arrayOf(Object),
- dynamicDispatcher: PropTypes.func
+ onVersionSelectChange: PropTypes.func
};
export default VersionSelect;
import VersionSelect from 'features/version/versionController/views/VersionSelect';
import { I18n } from 'react-redux-i18n';
import PropTypes from 'prop-types';
-import { isEmpty } from 'lodash';
const VersionContainer = props => {
let {
currentWorkflowVersion,
viewableVersions,
- dynamicDispatcher,
- onOverviewClick
+ onOverviewClick,
+ onVersionSelectChange
} = props;
- function createDisplayedVersionName() {
- if (isEmpty(viewableVersions)) return;
- Object.keys(viewableVersions).map((val, key) => {
- viewableVersions[key].displayed =
- viewableVersions[key].name + ' ' + viewableVersions[key].state;
- });
- return viewableVersions;
- }
-
- const versionList = createDisplayedVersionName();
-
return (
<div className="version-section-wrapper">
<div className="version-status-container">
<VersionSelect
- dynamicDispatcher={dynamicDispatcher}
currentWorkflowVersion={currentWorkflowVersion}
- viewableVersions={versionList}
+ viewableVersions={viewableVersions}
+ onVersionSelectChange={onVersionSelectChange}
/>
<span
className="version-selector-more-versions"
};
VersionContainer.propTypes = {
- currentWorkflowVersion: PropTypes.string,
+ currentWorkflowVersion: PropTypes.object,
viewableVersions: PropTypes.arrayOf(Object),
- dynamicDispatcher: PropTypes.func,
- onOverviewClick: PropTypes.func
+ onOverviewClick: PropTypes.func,
+ onVersionSelectChange: PropTypes.func
};
export default VersionContainer;
import versionApi from 'features/version/versionApi';
import { notificationActions } from 'shared/notifications/notificationsActions';
import { versionState } from 'features/version/versionConstants';
+import overviewApi from '../workflow/overview/overviewApi';
+import { versionListFetchAction } from '../workflow/overview/overviewConstansts';
function* fetchVersion(action) {
try {
try {
const { workflowId, history } = action.payload;
const data = yield call(versionApi.createNewVersion, action.payload);
- yield call(history.push('/workflow/' + workflowId + '/version/'));
- console.log(data);
+ const versions = yield call(overviewApi.getVersions, workflowId);
+ yield put(versionListFetchAction(versions));
+ yield call(
+ history.push('/workflow/' + workflowId + '/version/' + data.id)
+ );
} catch (error) {
yield put(genericNetworkErrorAction(error));
}
*/
export const NEW_VERSION = {
- baseVersionId: null,
+ baseId: null,
description: null
};
export const WORKFLOW_INPUT_CHANGE = 'createWorkflow/INPUT_CHANGE';
import { connect } from 'react-redux';
import OverviewView from 'features/workflow/overview/OverviewView';
import {
- getVersions,
+ getSortedVersions,
getSelectedVersionId,
getWorkflowData,
getAllIsVersionsCertifies
function mapStateToProps(state) {
return {
- versions: getVersions(state),
+ versions: getSortedVersions(state),
selectedVersion: getSelectedVersionId(state),
workflow: getWorkflowData(state),
isVersionsCertifies: getAllIsVersionsCertifies(state)
import WorkflowHeader from 'features/workflow/overview/views/WorkflowHeader';
class OverviewView extends Component {
- static propTypes = {};
+ static propTypes = {
+ getOverview: PropTypes.func,
+ versions: PropTypes.array,
+ onSelectVersion: PropTypes.func,
+ onCreateVersion: PropTypes.func,
+ selectedVersion: PropTypes.string,
+ workflow: PropTypes.object,
+ history: PropTypes.object,
+ showNewVersionModal: PropTypes.func,
+ isVersionsCertifies: PropTypes.bool,
+ location: PropTypes.object,
+ match: PropTypes.object,
+ updateWorkflow: PropTypes.func
+ };
constructor(props) {
super(props);
}
- componentDidMount() {
+ getOverviewFromRouter = () => {
const { match } = this.props;
const workflowId = match.params.workflowId;
this.props.getOverview(workflowId);
+ };
+
+ componentDidMount() {
+ this.getOverviewFromRouter();
}
onSelectVersionFromTable = data => {
}
}
-OverviewView.propTypes = {
- getOverview: PropTypes.func,
- versions: PropTypes.array,
- onSelectVersion: PropTypes.func,
- onCreateVersion: PropTypes.func,
- selectedVersion: PropTypes.string,
- workflow: PropTypes.object,
- history: PropTypes.object,
- showNewVersionModal: PropTypes.func,
- isVersionsCertifies: PropTypes.bool,
- location: PropTypes.object,
- match: PropTypes.object,
- updateWorkflow: PropTypes.func
-};
-
OverviewView.defaultProps = {
versions: [],
getOverview: () => {},
onSelectVersion: () => {},
- onCreateVersion: () => {},
selectedVersion: ''
};
--- /dev/null
+/*
+* Copyright © 2018 European Support Limited
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+ * http://www.apache.org/licenses/LICENSE-2.0
+*
+ * Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+import React from 'react';
+import renderer from 'react-test-renderer';
+
+import OverviewView from 'features/workflow/overview/OverviewView';
+
+describe('OverviewView Snapshot', () => {
+ it('renders correctly', () => {
+ const workflow = {
+ name: 'wf1',
+ description: 'desc 1',
+ id: 'id1'
+ };
+ const match = {
+ params: {
+ workflowId: 'id1'
+ }
+ };
+ const tree = renderer
+ .create(<OverviewView workflow={workflow} match={match} />)
+ .toJSON();
+
+ expect(tree).toMatchSnapshot();
+ });
+});
--- /dev/null
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`OverviewView Snapshot renders correctly 1`] = `
+<div>
+ <div
+ className="overview-page"
+ >
+ <div
+ className="overview-header"
+ >
+ wf1
+ -
+ title
+ </div>
+ <div
+ className="overview-content"
+ >
+ <div
+ className="workflow-details"
+ >
+ <form
+ onSubmit={[Function]}
+ >
+ <div
+ className="sdc-input "
+ >
+ <label
+ className="sdc-input__label required"
+ htmlFor="workflowName"
+ >
+ name
+ </label>
+ <input
+ className="sdc-input__input "
+ data-test-id={undefined}
+ disabled={true}
+ id="workflowName"
+ name="workflowName"
+ onBlur={[Function]}
+ onChange={[Function]}
+ onKeyDown={[Function]}
+ placeholder={undefined}
+ readOnly={false}
+ type="text"
+ value="wf1"
+ />
+ </div>
+ <div
+ className="description-part"
+ >
+ <div
+ className="sdc-input"
+ >
+ <div
+ className="sdc-input__label"
+ >
+ description
+ </div>
+ <textarea
+ className="field-section sdc-input__input"
+ data-test-id="description"
+ onChange={[Function]}
+ value="desc 1"
+ />
+ </div>
+ </div>
+ <div
+ className="save-description"
+ >
+ <button
+ className="sdc-button sdc-button__primary "
+ disabled={false}
+ onClick={undefined}
+ >
+ saveBtn
+ </button>
+ </div>
+ </form>
+ <div
+ className="version-info-part"
+ >
+
+ <div
+ className="label"
+ >
+ Invariant UUID
+ </div>
+ <div
+ className="value"
+ >
+ id1
+ </div>
+ </div>
+ </div>
+ <div
+ className="workflow-versions"
+ >
+ <div
+ className="versions-page-view"
+ >
+ <div
+ className="create-new-version newVersionDisabled"
+ >
+ <div
+ className="create-item-plus-icon"
+ onClick={[Function]}
+ >
+ <div
+ className="svg-icon-wrapper __secondary bottom"
+ disabled={undefined}
+ onClick={undefined}
+ >
+ <test-file-stub
+ className="svg-icon __plus"
+ />
+
+ </div>
+ newVersion
+ </div>
+ </div>
+ <div
+ className="versions-page-list-and-tree"
+ >
+ <div
+ className="version-tree-wrapper"
+ >
+ <div
+ className="version-tree-title-container"
+ >
+ <div
+ className="version-tree-title"
+ >
+ Version Tree
+ </div>
+ </div>
+ <div
+ className="tree-view versions-tree-container "
+ >
+ <svg
+ className="versions-tree"
+ width={200}
+ />
+ </div>
+ </div>
+ <div
+ className="version-list"
+ >
+ <div
+ className="version-item-row header-row "
+ data-test-id="version-item-row"
+ onClick={[Function]}
+ >
+ <div
+ className="version-item-field header-field item-version"
+ >
+ Version
+ </div>
+ <div
+ className="version-item-field header-field item-status"
+ >
+ Status
+ </div>
+ <div
+ className="version-item-field header-field"
+ >
+ <span
+ className={undefined}
+ style={undefined}
+ >
+ lastEdited
+ </span>
+ </div>
+ <div
+ className="version-item-field header-field"
+ >
+ <div
+ className="description-text"
+ >
+ Description
+ </div>
+ </div>
+ </div>
+ <div
+ className="version-list-items"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+`;
--- /dev/null
+/*
+* Copyright © 2018 European Support Limited
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import overviewReducer from '../overviewReducer';
+import { versionListFetchAction } from '../overviewConstansts';
+
+describe('Overview reducer', () => {
+ it('check fetch versions', () => {
+ const versionResponse = {
+ total: 2,
+ size: 0,
+ page: 0,
+ results: [
+ {
+ id: '99adf5bc36764628b8018033d285b591',
+ name: '1.0',
+ description: 'Initial versionewewe',
+ baseId: '',
+ state: 'CERTIFIED',
+ inputs: [
+ {
+ id: '08274a71d7e34d4e96878aa5fb1ed9bd',
+ name: 'wewe',
+ type: 'INTEGER',
+ mandatory: true
+ },
+ {
+ id: '7a0b9e33ea0244c2a05c03b96207f1c8',
+ name: 'eee',
+ type: 'BOOLEAN',
+ mandatory: false
+ }
+ ],
+ outputs: [
+ {
+ id: 'a5314bbd67ff4e6091385aaa82ebb266',
+ name: 'e',
+ type: 'FLOAT',
+ mandatory: false
+ }
+ ],
+ creationTime: '2018-07-25T07:36:10.112+0000',
+ modificationTime: '2018-07-25T07:36:48.663+0000'
+ },
+ {
+ id: 'cd8156bfb250475dac1e2681a9f2a74f',
+ name: '2.0',
+ description: 'versio2neee',
+ baseId: '99adf5bc36764628b8018033d285b591',
+ state: 'CERTIFIED',
+ inputs: [
+ {
+ id: '08274a71d7e34d4e96878aa5fb1ed9bd',
+ name: 'wewe',
+ type: 'INTEGER',
+ mandatory: true
+ },
+ {
+ id: '7a0b9e33ea0244c2a05c03b96207f1c8',
+ name: 'eee',
+ type: 'BOOLEAN',
+ mandatory: false
+ }
+ ],
+ outputs: [
+ {
+ id: 'a5314bbd67ff4e6091385aaa82ebb266',
+ name: 'e',
+ type: 'FLOAT',
+ mandatory: false
+ }
+ ],
+ creationTime: '2018-07-25T07:36:58.978+0000',
+ modificationTime: '2018-07-25T07:37:09.041+0000'
+ }
+ ]
+ };
+
+ expect(
+ overviewReducer([], versionListFetchAction(versionResponse))
+ ).toEqual([...versionResponse.results]);
+ });
+});
import { versionState } from 'features/version/versionConstants';
export const getVersions = state => state && state.workflow.versions;
+export const getSortedVersions = createSelector(
+ getVersions,
+ versions => versions && versions.sort((a, b) => a.name - b.name)
+);
export const getSelectedVersionId = state =>
state && state.currentVersion.general.id;
export const getWorkflowCreationTime = state =>
export const getWorkflowId = state => state && state.workflow.data.id;
export const getAllIsVersionsCertifies = createSelector(
- getVersions,
+ getSortedVersions,
versions =>
versions &&
versions.filter(
);
export const getLatestBaseId = createSelector(
- getVersions,
- versions => versions.length && versions[versions.length - 1].baseId
+ getSortedVersions,
+ versions => versions.length && versions[versions.length - 1].id
);
*/
import React from 'react';
import PropTypes from 'prop-types';
-import { I18n } from 'react-redux-i18n';
-import { Localize } from 'react-redux-i18n';
export const LabeledValue = ({ title, value }) => (
<React.Fragment>
<div className="label">{title}</div>
value: PropTypes.oneOfType([PropTypes.string, PropTypes.object])
};
-export const VersionInfo = ({ created, modified, children }) => (
- <div className="version-info-part">
- {created && (
- <LabeledValue
- title={I18n.t('workflow.general.created')}
- value={<Localize value={created} dateFormat="date.short" />}
- />
- )}
- {modified && (
- <LabeledValue
- title={I18n.t('workflow.general.modified')}
- value={<Localize value={modified} dateFormat="date.short" />}
- />
- )}
- {children}
- </div>
+export const VersionInfo = ({ children }) => (
+ <div className="version-info-part">{children}</div>
);
VersionInfo.defaultProps = {
const { DefinePlugin } = require('webpack');
const ModuleRedirectPlugin = require('./tools/ModuleRedirectPlugin');
const devConfig = require('./tools/getDevConfig');
-//TODO: check for better solution
-//const DEV = process.argv[1].indexOf('webpack-dev-server') >= 0;
const apiMocker = require('webpack-api-mocker');
const proxyServer = require('./tools/proxy-server');
port: devConfig.port,
historyApiFallback: true,
publicPath: `http://localhost:${devConfig.port}`,
- //todo: need to check if array is mandatory
contentBase: [path.join(__dirname, 'dist')],
inline: true,
hot: true,