From da9db10701cb0d8e9747c25e67dfd61ae8a518a9 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 6 Nov 2018 16:39:28 +0100 Subject: [PATCH] implemented global configuration for subversion --- .../src/main/js/SvnConfigurationForm.js | 107 ++++++++++++++++++ .../src/main/js/SvnGlobalConfiguration.js | 28 +++++ .../scm-svn-plugin/src/main/js/index.js | 6 + .../main/resources/locales/en/plugins.json | 21 ++++ 4 files changed, 162 insertions(+) create mode 100644 scm-plugins/scm-svn-plugin/src/main/js/SvnConfigurationForm.js create mode 100644 scm-plugins/scm-svn-plugin/src/main/js/SvnGlobalConfiguration.js diff --git a/scm-plugins/scm-svn-plugin/src/main/js/SvnConfigurationForm.js b/scm-plugins/scm-svn-plugin/src/main/js/SvnConfigurationForm.js new file mode 100644 index 0000000000..9470550ef2 --- /dev/null +++ b/scm-plugins/scm-svn-plugin/src/main/js/SvnConfigurationForm.js @@ -0,0 +1,107 @@ +//@flow +import React from "react"; +import type { Links } from "@scm-manager/ui-types"; +import { translate } from "react-i18next"; +import { InputField, Checkbox, Select } from "@scm-manager/ui-components"; + +type Configuration = { + repositoryDirectory: string, + compatibility: string, + enabledGZip: boolean, + disabled: boolean, + _links: Links +}; + +type Props = { + initialConfiguration: Configuration, + readOnly: boolean, + + onConfigurationChange: (Configuration, boolean) => void, + + // context props + t: (string) => string +} + +type State = Configuration; + +class HgConfigurationForm extends React.Component { + + constructor(props: Props) { + super(props); + this.state = { ...props.initialConfiguration, validationErrors: [] }; + } + + isValid = () => { + return !!this.state.repositoryDirectory; + }; + + handleChange = (value: any, name: string) => { + this.setState({ + [name]: value + }, () => this.props.onConfigurationChange(this.state, this.isValid())); + }; + + compatibilityOptions = (values: string[]) => { + const options = []; + for (let value of values) { + options.push( this.compatibilityOption(value) ); + } + return options; + }; + + compatibilityOption = (value: string) => { + return { + value, + label: this.props.t("scm-svn-plugin.config.compatibility-values." + value.toLowerCase()) + }; + }; + + render() { + const { readOnly, t } = this.props; + const compatibilityOptions = this.compatibilityOptions([ + "NONE", "PRE14", "PRE15", "PRE16", "PRE17", "WITH17" + ]); + + return ( + <> + +