Commit 2ef7aec6 authored by Nature's avatar Nature

Initial commit

parents
This diff is collapsed.
# Choerodon Hap Front Boot
Choerodon hap front boot is a toolkit about front end package management, startup, compilation.
It is mainly used to provide custom some configurations file to create a project of React that can be modified to some extent.
The construction project can be used on `macOS`, `Windows` or `Linux`. Teams can be developed in modules, greatly speeding up development.
* The project uses `webpack v3+` for construction.
* `React` and `Mobx` are used as the main development technology.
## Install
```bash
$ npm install choerodon-hap-front-boot --registry https://nexus.choerodon.com.cn/repository/choerodon-npm/
```
*now the lib is in private repository so you should add --registry*
## Configuration
* Create a configuration file named `config.js`
```js
const config = {
port: 9090,
proxyTarget: 'http://localhost:8080',
}
```
*we suggest you only change the two options in daily development. Actually, we exposed a lot of configurable options, but for the sake of simplicity, we hidden them. If you have some special demand, contact us.*
## Run
add the below code in your package.json
```javascript
// package.json
...
"scripts": {
"start": "choerodon-hap-front-boot start --config ./react/config.js",
"build": "choerodon-hap-front-boot build --config ./react/config.js",
},
...
```
and run
```javascript
// if you can not run npm start with permission problems on linux or macOS, run *chmod -R 755 node_modules* first
$ npm start
```
Once running, open http://localhost:9090
*if you want to run all modules you relied on, you can change start commond as choerodon-hap-front-boot start --config ./react/config.js -m*
## Dist
```
$ npm run build
```
## axios
`axios` is used for websocket to make a network request.
```jsx
import React from 'react';
import { axios } from 'choerodon-hap-front-boot';
class Example1 extends React.Component {
componentDidMount() {
this.loadData();
}
async loadData() {
try {
const res = await axios.get('your url here');
// if res get success, do something
} catch (error) {
// if something wrong, do something
}
}
render() {
return (
<div>axios demo</div>
)
}
}
```
We strongly recommend that you use this method, reasons are as follows:
- add `X-Requested-With` header to fit dataset development way
- add `API_HOST` you set in config.js
- add login and timeout default processing with response interceptors
## change home
You can change the home page by yourself.
only put the home page in your project path, and set `homePath` in project:
```jsx
const config = {
homePath: 'your url here',
}
```
- restart and you will see your page is at home(you can even set a function page at home)
- in the near future, we will launch a configurable dashboard settings homepage, and this approach will be retained.
## Content
`Content` component is the outest wrapper of your page.
(Of course you can write your page without it, but we strongly recommond you use it.)
```jsx
...
render() {
return (
<Content>
<div>hello hap</div>
</Content>
);
}
...
```
- you can use hotkey system with it
- it provide default style like `padding: 10px 20px;`, you can delete it by rewrite style such as `style={{ padding: 0 }}`
- in the near future, we may add permission control on it
- by the way, if you have your own `index.less`, you can(should) add a className on Content, and named after your module and function, such as `wf-model-editApproveChain-modal`, and the less like below
```less
.wf-model-editApproveChain-modal {
// your style code here
}
```
*like a namespace, block other people's code from affecting your page, and vice versa*
## asyncRouter
`asyncRouter` component is a component for demand loading
```jsx
import CacheRoute, { CacheSwitch } from 'react-router-cache-route';
import { asyncRouter } from 'choerodon-hap-front-boot';
const YOUR_PAGE = asyncRouter(() => import('./src/MyPage'));
...
<CacheRoute exact path={`${match.url}/mypage`} cacheKey={`${match.url}/mypage`} component={ApvStratYOUR_PAGEegy} />
...
```
- Using it will better help with split bundle and the user experience
- we provide cache and refresh control in it
## $l
`$l` function is use for uniform localization support.
```jsx
import { $l } from 'choerodon-hap-front-boot';
...
<div>$l('code')</div>
...
```
## openTabR
`openTabR` is a function that can open(create or locate) a tab.
```jsx
import { openTabR } from 'choerodon-hap-front-boot';
...
openTabR(url, title);
...
```
## Dependencies
* Node environment (6.9.0+)
* Git environment
## Related documents and information
* [React](https://reactjs.org)
* [Mobx](https://github.com/mobxjs/mobx)
* [webpack](https://webpack.docschina.org)
* [gulp](https://gulpjs.com)
* [choerodon hap ui](http://hap-ui.staging.saas.hand-china.com)
## Reporting Issues
If you find any shortcomings or bugs, please describe them in the issue
## How to Contribute
Pull requests are welcome! Follow to know for more information on how to contribute.
\ No newline at end of file
#!/usr/bin/env node
const program = require('commander');
const package = require('../package.json');
program
.version(package.version)
.usage('[command] [options]')
.command('start [options]', 'to start a server')
.command('build [options]', 'to build and write static files to `config.output`')
.parse(process.argv);
process.on('SIGINT', function() {
program.runningCommand && program.runningCommand.kill('SIGKILL');
process.exit(0);
});
#!/usr/bin/env node
const program = require('commander');
const Choerodon = require('../lib/index');
program
.option('-c, --config <path>', 'set config path. defaults to ./choerodon.config.js')
.option('-e, --env <path>', 'NODE_ENV in build')
.option('-m, --modules', 'should bundle dependence modules in generator-react folder')
.parse(process.argv);
Choerodon.build(program);
#!/usr/bin/env node
const program = require('commander');
const Choerodon = require('../lib/index');
program
.option('-c, --config <path>', 'set config path. defaults to ./choerodon.config.js')
.option('-e, --env <path>', 'NODE_ENV in build')
.option('-m, --modules', 'should bundle dependence modules in generator-react folder')
.parse(process.argv);
Choerodon.dist(program);
#!/usr/bin/env node
const program = require('commander');
const Choerodon = require('../lib/index');
program
.option('-c, --config <path>', 'set config path. defaults to ./choerodon.config.js')
.option('-m, --modules', 'should bundle dependence modules in generator-react folder')
.parse(process.argv);
Choerodon.start(program);
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = build;
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _rimraf = require('rimraf');
var _rimraf2 = _interopRequireDefault(_rimraf);
var _context = require('./common/context');
var _context2 = _interopRequireDefault(_context);
var _warning = require('../common/warning');
var _warning2 = _interopRequireDefault(_warning);
var _initialize = require('./common/initialize');
var _initialize2 = _interopRequireDefault(_initialize);
var _getAllFiles = require('./common/getAllFiles');
var _getAllFiles2 = _interopRequireDefault(_getAllFiles);
var _getPackagePath = require('./common/getPackagePath');
var _getPackagePath2 = _interopRequireDefault(_getPackagePath);
var _generateEntryFile = require('./common/generateEntryFile');
var _generateEntryFile2 = _interopRequireDefault(_generateEntryFile);
var _updateWebpackConfig = require('../config/updateWebpackConfig');
var _updateWebpackConfig2 = _interopRequireDefault(_updateWebpackConfig);
var _installSubmoduleDependencies = require('./common/installSubmoduleDependencies');
var _installSubmoduleDependencies2 = _interopRequireDefault(_installSubmoduleDependencies);
var _copyFonts = require('./common/copyFonts');
var _copyFonts2 = _interopRequireDefault(_copyFonts);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function transformVendor() {
var _context$choerodonCon = _context2['default'].choerodonConfig,
output = _context$choerodonCon.output,
distBasePath = _context$choerodonCon.distBasePath;
var venderName = (0, _getAllFiles2['default'])();
if (venderName !== '') {
var venderPath = _path2['default'].join(process.cwd(), distBasePath, output, 'dis', venderName);
var venderStr = _fsExtra2['default'].readFileSync(venderPath, { encoding: 'utf-8' });
_fsExtra2['default'].writeFileSync(venderPath, venderStr.replace(/dis/g, 'lib/dist/dis'));
}
}
function copyAndTransform() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'index.html';
var _context$choerodonCon2 = _context2['default'].choerodonConfig,
output = _context$choerodonCon2.output,
distBasePath = _context$choerodonCon2.distBasePath,
htmlPath = _context$choerodonCon2.htmlPath;
var htmlDistPath = _path2['default'].join(process.cwd(), distBasePath, output, name);
var dest = _path2['default'].join(process.cwd(), htmlPath, name);
_fsExtra2['default'].copySync(htmlDistPath, dest);
var str = _fsExtra2['default'].readFileSync(dest, { encoding: 'utf-8' });
var transformStr = str.replace(/href="\/dis/g, 'href="/lib/dist/dis').replace(/src="\/dis/g, 'src="/lib/dist/dis').replace(/\/favicon/g, '/lib/dist/favicon');
_fsExtra2['default'].writeFileSync(dest, transformStr);
_fsExtra2['default'].unlink(htmlDistPath);
}
function dist(mainPackage, env) {
var _context$choerodonCon3 = _context2['default'].choerodonConfig,
entryName = _context$choerodonCon3.entryName,
output = _context$choerodonCon3.output,
distBasePath = _context$choerodonCon3.distBasePath;
var distPath = _path2['default'].join(process.cwd(), distBasePath, output);
_rimraf2['default'].sync(distPath);
_mkdirp2['default'].sync(distPath);
(0, _generateEntryFile2['default'])(mainPackage, entryName);
var webpackConfig = (0, _updateWebpackConfig2['default'])('build', env);
webpackConfig.plugins.push(new _webpack2['default'].DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(env)
}));
(0, _webpack2['default'])(webpackConfig, function (err, stats) {
if (err !== null) {
(0, _warning2['default'])(false, err);
} else if (stats.hasErrors()) {
(0, _warning2['default'])(false, stats.toString('errors-only'));
}
copyAndTransform();
copyAndTransform('withoutsider.html');
transformVendor();
(0, _copyFonts2['default'])();
});
}
function build(program) {
(0, _initialize2['default'])(program);
var env = program.env || process.env.NODE_ENV || 'production';
if (program.modules) {
(0, _installSubmoduleDependencies2['default'])(function (mainPackage) {
return dist(mainPackage, env);
});
} else {
var mainPackagePath = (0, _getPackagePath2['default'])();
var mainPackage = require(mainPackagePath);
dist(mainPackage, env);
}
}
\ No newline at end of file
'use strict';
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _warning = require('../../common/warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var isInitialized = false;
exports.initialize = function initialize(context) {
if (isInitialized) {
(0, _warning2['default'])(false, '`context` had been initialized');
return;
}
var tmpDirPath = _path2['default'].join(__dirname, '../../../tmp');
context.tmpDirPath = tmpDirPath;
_mkdirp2['default'].sync(tmpDirPath);
(0, _extends3['default'])(exports, context);
isInitialized = true;
};
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _rimraf = require('rimraf');
var _rimraf2 = _interopRequireDefault(_rimraf);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* 复制fonts目录下的字体
* 到contentPath目录下
*/
function copyFonts() {
var nodeModulesPath = _path2['default'].join(process.cwd(), 'node_modules', 'choerodon-ui-font', 'fonts');
var distPath = _path2['default'].join(process.cwd(), 'src', 'main', 'resources', 'lib', 'dist', 'dis', 'fonts');
if (_fsExtra2['default'].existsSync(distPath)) {
_rimraf2['default'].sync(distPath);
}
_mkdirp2['default'].sync(distPath);
['icomoon.eot', 'icomoon.svg', 'icomoon.ttf', 'icomoon.woff'].forEach(function (font) {
var from = _path2['default'].join(nodeModulesPath, font);
var to = _path2['default'].join(distPath, font);
_fsExtra2['default'].copySync(from, to);
});
}
exports['default'] = copyFonts;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = escapeWinPath;
function escapeWinPath(path) {
return path.replace(/\\/g, '\\\\');
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = generateEntryFile;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _nunjucks = require('nunjucks');
var _nunjucks2 = _interopRequireDefault(_nunjucks);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
var _getRoutesPath = require('./getRoutesPath');
var _getRoutesPath2 = _interopRequireDefault(_getRoutesPath);
var _escapeWinPath = require('./escapeWinPath');
var _escapeWinPath2 = _interopRequireDefault(_escapeWinPath);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var entryTemplate = _fs2['default'].readFileSync(_path2['default'].join(__dirname, '../../nunjucks/entry.nunjucks.js')).toString();
var entryWithoutSiderTemplate = _fs2['default'].readFileSync(_path2['default'].join(__dirname, '../../nunjucks/entrywithoutsider.nunjucks.js')).toString();
function generateEntryFile(mainPackage, configEntryName) {
var tmpDirPath = _context2['default'].tmpDirPath,
isDev = _context2['default'].isDev;
var entryPath = _path2['default'].join(tmpDirPath, 'entry.' + configEntryName + '.js');
var entryWithoutSiderPath = _path2['default'].join(tmpDirPath, 'entry.withoutsider.js');
var routesPath = (0, _getRoutesPath2['default'])(mainPackage, configEntryName);
_fs2['default'].writeFileSync(entryPath, _nunjucks2['default'].renderString(entryTemplate, {
routesPath: (0, _escapeWinPath2['default'])(routesPath),
source: isDev ? 'src' : 'lib'
}));
_fs2['default'].writeFileSync(entryWithoutSiderPath, _nunjucks2['default'].renderString(entryWithoutSiderTemplate, {
routesPath: (0, _escapeWinPath2['default'])(routesPath),
source: isDev ? 'src' : 'lib'
}));
}
\ No newline at end of file
'use strict';
var fs = require('fs');
var path = require('path');
/**
* 获取generate-react目录下的模块名
* (默认该目录下全为依赖模块)
* 返回模块名数组
*/
function getSubmodule() {
var vender = '';
var cmpsPath = path.join(process.cwd(), 'src', 'main', 'resources', 'lib', 'dist', 'dis');
var files = fs.readdirSync(cmpsPath);
files.forEach(function (item) {
var stat = fs.lstatSync('./src/main/resources/lib/dist/dis/' + item);
if (stat.isDirectory() !== true && item.startsWith('vendor')) {
vender = item;
}
});
return vender;
}
module.exports = getSubmodule;
\ No newline at end of file
'use strict';
var fs = require('fs');
var path = require('path');
/**
* 获取generate-react目录下的模块名
* (默认该目录下全为依赖模块)
* 返回模块名数组
*/
function getSubmodule() {
var components = [];
var cmpsPath = path.join(process.cwd(), 'target', 'generate-react');
var files = fs.readdirSync(cmpsPath);
files.forEach(function (item) {
var stat = fs.lstatSync('./target/generate-react/' + item);
if (stat.isDirectory() === true
// && !item.startsWith('hap-core')
) {
components.push(item);
}
});
return components;
}
module.exports = getSubmodule;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getDashBoardPath;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _nunjucks = require('nunjucks');
var _nunjucks2 = _interopRequireDefault(_nunjucks);
var _glob = require('glob');
var _glob2 = _interopRequireDefault(_glob);
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _isObject = require('lodash/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var dashboardTemplate = _fs2['default'].readFileSync(_path2['default'].join(__dirname, '../../nunjucks/dashboard.nunjucks.js')).toString();
function normalizeDashBoardComponentOrLocale(components, key, dir) {
_glob2['default'].sync(_path2['default'].join(process.cwd(), dir)).forEach(function (match) {
components.push('"' + key + '/' + _path2['default'].basename(match, _path2['default'].extname(match)) + '": function() { return import("' + match + '"); },');
});
}
function getDashBoards(dashboard) {
var dashboardComponents = [];
var dashboardLocale = [];
if ((0, _isObject2['default'])(dashboard)) {
Object.keys(dashboard).forEach(function (key) {
var value = dashboard[key];
var componentsPath = value;
var localePath = void 0;
if ((0, _isObject2['default'])(value)) {
componentsPath = value.components;
localePath = value.locale;
}
if (typeof componentsPath === 'string') {
normalizeDashBoardComponentOrLocale(dashboardComponents, key, componentsPath);
} else if ((0, _isArray2['default'])(componentsPath)) {
componentsPath.forEach(function (dir) {
normalizeDashBoardComponentOrLocale(dashboardComponents, key, dir);
});
}
if (typeof localePath === 'string') {
normalizeDashBoardComponentOrLocale(dashboardLocale, key, localePath);
}
});
}
return '\n{\n dashboardComponents: {\n ' + dashboardComponents.join('\n ') + '\n },\n dashboardLocale: {\n ' + dashboardLocale.join('\n ') + '\n }\n}\n ';
}
function getDashBoardPath(configEntryName) {
var dashboard = _context2['default'].choerodonConfig.dashboard,
tmpDirPath = _context2['default'].tmpDirPath;
var dashboardPath = _path2['default'].join(tmpDirPath, 'dashboard.' + configEntryName + '.js');
_nunjucks2['default'].configure(dashboardPath, {
autoescape: false
});
_fs2['default'].writeFileSync(dashboardPath, _nunjucks2['default'].renderString(dashboardTemplate, {
dashboard: getDashBoards(dashboard)
}));
return dashboardPath;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getPackagePath;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getPackagePath() {
var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.';
return _path2['default'].join(process.cwd(), base, 'package.json');
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
exports['default'] = getPackageRoute;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getPackageRoute(packageInfo) {
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';
if (packageInfo) {
var main = packageInfo.main,
name = packageInfo.name;
// return { [name.slice(name.lastIndexOf('-') + 1)]: path.join(base, main) };
return (0, _defineProperty3['default'])({}, name, _path2['default'].join(base, main));
}
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getRoutesPath;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _nunjucks = require('nunjucks');
var _nunjucks2 = _interopRequireDefault(_nunjucks);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
var _escapeWinPath = require('./escapeWinPath');
var _escapeWinPath2 = _interopRequireDefault(_escapeWinPath);
var _getPackageRoute = require('./getPackageRoute');
var _getPackageRoute2 = _interopRequireDefault(_getPackageRoute);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var routesTemplate = _fs2['default'].readFileSync(_path2['default'].join(__dirname, '../../nunjucks/routes.nunjucks.js')).toString();
function getRoutesPath(packageInfo, configEntryName) {
var tmpDirPath = _context2['default'].tmpDirPath,
isDev = _context2['default'].isDev,
_context$choerodonCon = _context2['default'].choerodonConfig,
routes = _context$choerodonCon.routes,
homePath = _context$choerodonCon.homePath;
var configRoutes = routes || (0, _getPackageRoute2['default'])(packageInfo);
var routesPath = _path2['default'].join(tmpDirPath, 'routes.' + configEntryName + '.js');
_nunjucks2['default'].configure(routesPath, { autoescape: false });
var homePathStr = 'createHome("/", ' + (homePath ? 'function() { return import("' + (0, _escapeWinPath2['default'])(_path2['default'].join(process.cwd(), homePath || '')) + '"); }' : null) + ', ' + (!homePath ? homePath : 'CHOERODON_HAP_FRONT_BOOT_HOME_PAGE') + ')';
_fs2['default'].writeFileSync(routesPath, _nunjucks2['default'].renderString(routesTemplate, {
routes: Object.keys(configRoutes).map(function (key) {
return 'createRoute("/' + key + '", function() { return import("' + (0, _escapeWinPath2['default'])(_path2['default'].join(process.cwd(), configRoutes[key])) + '"); }, "' + key + '")';
}).join(',\n'),
home: homePathStr,
source: isDev ? 'src' : 'lib'
}));
return routesPath;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getRunCmdEnv;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getRunCmdEnv() {
var env = {};
Object.keys(process.env).forEach(function (key) {
env[key] = process.env[key];
});
var nodeModulesBinDir = _path2['default'].join(__dirname, '../../node_modules/.bin');
env.PATH = env.PATH ? nodeModulesBinDir + ':' + env.PATH : nodeModulesBinDir;
return env;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = initialize;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _getChoerodonConfig = require('../../config/getChoerodonConfig');
var _getChoerodonConfig2 = _interopRequireDefault(_getChoerodonConfig);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function initialize(program, dev) {
var configFile = _path2['default'].join(process.cwd(), program.config || 'choerodon.config.js');
var choerodonConfig = (0, _getChoerodonConfig2['default'])(configFile);
_context2['default'].initialize({ choerodonConfig: choerodonConfig, isDev: dev });
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = install;
var _crossSpawn = require('cross-spawn');
var _crossSpawn2 = _interopRequireDefault(_crossSpawn);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* 执行`npm i`安装依赖
* @param {*} cb callback 安装依赖完成后回调
*/
function install(cb) {
var child = (0, _crossSpawn2['default'])('npm', ['i'], { stdio: 'inherit' });
child.on('close', function (code) {
cb(code);
});
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports['default'] = installSubmoduleDependencies;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _getPackagePath = require('./getPackagePath');
var _getPackagePath2 = _interopRequireDefault(_getPackagePath);
var _getPackageRoute = require('./getPackageRoute');
var _getPackageRoute2 = _interopRequireDefault(_getPackageRoute);
var _context = require('./context');
var _context2 = _interopRequireDefault(_context);
var _getAllSubModules = require('./getAllSubModules');
var _getAllSubModules2 = _interopRequireDefault(_getAllSubModules);
var _install = require('./install');
var _install2 = _interopRequireDefault(_install);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getDependenciesByModules(dependencies) {
var choerodonConfig = _context2['default'].choerodonConfig;
var deps = {};
var cmps = (0, _getAllSubModules2['default'])();
var routes = cmps.reduce(function (obj, module) {
var packageInfo = require((0, _getPackagePath2['default'])('./target/generate-react/' + module));
(0, _extends3['default'])(deps, packageInfo[dependencies]);
return (0, _extends3['default'])(obj, (0, _getPackageRoute2['default'])(packageInfo, './target/generate-react/' + module));
}, {});
var mainPackagePath = (0, _getPackagePath2['default'])();
var mainPackage = require(mainPackagePath);
var main = mainPackage.main,
name = mainPackage.name;
// routes[name.slice(name.lastIndexOf('-') + 1)] = path.join('.', main);
routes[name] = _path2['default'].join('.', main);
if (!choerodonConfig.routes) {
choerodonConfig.routes = routes;
}
return deps;
}
function installSubmoduleDependencies(cb) {
var mainPackagePath = (0, _getPackagePath2['default'])();
var mainPackage = require(mainPackagePath);
mainPackage.dependencies = (0, _extends3['default'])(getDependenciesByModules('dependencies'), mainPackage.dependencies);
mainPackage.peerDependencies = (0, _extends3['default'])(getDependenciesByModules('peerDependencies'), mainPackage.peerDependencies);
_fs2['default'].writeFileSync(mainPackagePath, JSON.stringify(mainPackage));
(0, _install2['default'])(function () {
return cb(mainPackage);
});
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = build;
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _rimraf = require('rimraf');
var _rimraf2 = _interopRequireDefault(_rimraf);
var _context = require('./common/context');
var _context2 = _interopRequireDefault(_context);
var _warning = require('../common/warning');
var _warning2 = _interopRequireDefault(_warning);
var _initialize = require('./common/initialize');
var _initialize2 = _interopRequireDefault(_initialize);
var _getAllFiles = require('./common/getAllFiles');
var _getAllFiles2 = _interopRequireDefault(_getAllFiles);
var _getPackagePath = require('./common/getPackagePath');
var _getPackagePath2 = _interopRequireDefault(_getPackagePath);
var _generateEntryFile = require('./common/generateEntryFile');
var _generateEntryFile2 = _interopRequireDefault(_generateEntryFile);
var _updateWebpackConfig = require('../config/updateWebpackConfig');
var _updateWebpackConfig2 = _interopRequireDefault(_updateWebpackConfig);
var _installSubmoduleDependencies = require('./common/installSubmoduleDependencies');
var _installSubmoduleDependencies2 = _interopRequireDefault(_installSubmoduleDependencies);
var _copyFonts = require('./common/copyFonts');
var _copyFonts2 = _interopRequireDefault(_copyFonts);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function transformVendor() {
var _context$choerodonCon = _context2['default'].choerodonConfig,
output = _context$choerodonCon.output,
distBasePath = _context$choerodonCon.distBasePath;
var venderName = (0, _getAllFiles2['default'])();
if (venderName !== '') {
var venderPath = _path2['default'].join(process.cwd(), distBasePath, output, 'dis', venderName);
var venderStr = _fsExtra2['default'].readFileSync(venderPath, { encoding: 'utf-8' });
_fsExtra2['default'].writeFileSync(venderPath, venderStr.replace(/dis/g, 'lib/dist/dis'));
}
}
function copyAndTransform() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'index.html';
var _context$choerodonCon2 = _context2['default'].choerodonConfig,
output = _context$choerodonCon2.output,
distBasePath = _context$choerodonCon2.distBasePath,
htmlPath = _context$choerodonCon2.htmlPath;
var htmlDistPath = _path2['default'].join(process.cwd(), distBasePath, output, name);
var dest = _path2['default'].join(process.cwd(), htmlPath, name);
_fsExtra2['default'].copySync(htmlDistPath, dest);
var str = _fsExtra2['default'].readFileSync(dest, { encoding: 'utf-8' });
var transformStr = str.replace(/href="\/dis/g, 'href="/lib/dist/dis').replace(/src="\/dis/g, 'src="/lib/dist/dis').replace(/\/favicon/g, '/lib/dist/favicon');
_fsExtra2['default'].writeFileSync(dest, transformStr);
_fsExtra2['default'].unlink(htmlDistPath);
}
function dist(mainPackage, env) {
var _context$choerodonCon3 = _context2['default'].choerodonConfig,
entryName = _context$choerodonCon3.entryName,
output = _context$choerodonCon3.output,
distBasePath = _context$choerodonCon3.distBasePath;
var distPath = _path2['default'].join(process.cwd(), distBasePath, output);
_rimraf2['default'].sync(distPath);
_mkdirp2['default'].sync(distPath);
(0, _generateEntryFile2['default'])(mainPackage, entryName);
var webpackConfig = (0, _updateWebpackConfig2['default'])('build', env);
webpackConfig.plugins.push(new _webpack2['default'].DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(env)
}));
(0, _webpack2['default'])(webpackConfig, function (err, stats) {
if (err !== null) {
(0, _warning2['default'])(false, err);
} else if (stats.hasErrors()) {
(0, _warning2['default'])(false, stats.toString('errors-only'));
}
// copyAndTransform();
// copyAndTransform('withoutsider.html');
// transformVendor();
(0, _copyFonts2['default'])();
});
}
function build(program) {
(0, _initialize2['default'])(program);
var env = program.env || process.env.NODE_ENV || 'production';
if (program.modules) {
(0, _installSubmoduleDependencies2['default'])(function (mainPackage) {
return dist(mainPackage, env);
});
} else {
var mainPackagePath = (0, _getPackagePath2['default'])();
var mainPackage = require(mainPackagePath);
dist(mainPackage, env);
}
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports['default'] = start;
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _webpackDevServer = require('webpack-dev-server');
var _webpackDevServer2 = _interopRequireDefault(_webpackDevServer);
var _openBrowser = require('react-dev-utils/openBrowser');
var _openBrowser2 = _interopRequireDefault(_openBrowser);
var _context = require('./common/context');
var _context2 = _interopRequireDefault(_context);
var _initialize = require('./common/initialize');
var _initialize2 = _interopRequireDefault(_initialize);
var _getPackagePath = require('./common/getPackagePath');
var _getPackagePath2 = _interopRequireDefault(_getPackagePath);
var _generateEntryFile = require('./common/generateEntryFile');
var _generateEntryFile2 = _interopRequireDefault(_generateEntryFile);
var _updateWebpackConfig = require('../config/updateWebpackConfig');
var _updateWebpackConfig2 = _interopRequireDefault(_updateWebpackConfig);
var _installSubmoduleDependencies = require('./common/installSubmoduleDependencies');
var _installSubmoduleDependencies2 = _interopRequireDefault(_installSubmoduleDependencies);
var _copyFonts = require('./common/copyFonts');
var _copyFonts2 = _interopRequireDefault(_copyFonts);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* generateEntryFile and start webpack-dev-server
* @param {*} mainPackage workspace pkg.json object
* @param {*} dev
*/
function run(mainPackage, dev) {
var _context$choerodonCon = _context2['default'].choerodonConfig,
entryName = _context$choerodonCon.entryName,
devServerConfig = _context$choerodonCon.devServerConfig,
output = _context$choerodonCon.output,
port = _context$choerodonCon.port,
proxyTarget = _context$choerodonCon.proxyTarget;
(0, _generateEntryFile2['default'])(mainPackage, entryName, dev);
var webpackConfig = (0, _updateWebpackConfig2['default'])('start', 'development');
webpackConfig.plugins.push(new _webpack2['default'].HotModuleReplacementPlugin());
var serverOptions = (0, _extends3['default'])({
quiet: true,
hot: true
}, devServerConfig, {
// contentBase: path.join(process.cwd(), output),
contentBase: _path2['default'].join(process.cwd(), 'src', 'main', 'resources', 'lib', output),
historyApiFallback: true,
host: 'localhost',
proxy: [{
context: ['**', '!/', '!/dis/**'],
target: proxyTarget,
changeOrigin: true,
secure: false,
autoRewrite: true
}]
});
_webpackDevServer2['default'].addDevServerEntrypoints(webpackConfig, serverOptions);
(0, _copyFonts2['default'])();
var compiler = (0, _webpack2['default'])(webpackConfig);
var timefix = 11000;
compiler.plugin('watch-run', function (watching, callback) {
watching.startTime += timefix;
callback();
});
compiler.plugin('done', function (stats) {
stats.startTime -= timefix;
});
var server = new _webpackDevServer2['default'](compiler, serverOptions);
server.listen(port, '0.0.0.0', function () {
return (0, _openBrowser2['default'])('http://localhost:' + port);
});
}
function start(program, dev) {
(0, _initialize2['default'])(program, dev);
if (!dev && program.modules) {
(0, _installSubmoduleDependencies2['default'])(run);
} else {
var mainPackagePath = (0, _getPackagePath2['default'])();
var mainPackage = require(mainPackagePath);
run(mainPackage);
}
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _warning = require('warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var warned = {};
exports['default'] = function (valid, message) {
if (!valid && !warned[message]) {
(0, _warning2['default'])(false, message);
warned[message] = true;
}
};
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = babel;
var _os = require('os');
var _context = require('../bin/common/context');
var _context2 = _interopRequireDefault(_context);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function babel(mode, env) {
var choerodonConfig = _context2['default'].choerodonConfig;
return choerodonConfig.babelConfig({
presets: ['react', ['es2015'], 'stage-1'],
plugins: ['transform-async-to-generator', 'transform-decorators-legacy', 'transform-class-properties', 'transform-runtime', 'lodash', ['import', [{
libraryName: 'choerodon-ui',
style: true
}, {
libraryName: 'choerodon-hap-ui',
style: true
}]]]
}, mode, env);
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports['default'] = getChoerodonConfig;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _autoprefixer = require('autoprefixer');
var _autoprefixer2 = _interopRequireDefault(_autoprefixer);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var defaultConfig = {
port: 9090,
output: './dist',
htmlTemplate: 'index.template.html',
devServerConfig: {},
postcssConfig: {
plugins: [(0, _autoprefixer2['default'])({
browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 8', 'iOS >= 8', 'Android >= 4']
})]
},
babelConfig: function babelConfig(config, mode, env) {
return config;
},
webpackConfig: function webpackConfig(config, mode, env) {
return config;
},
enterPoints: function enterPoints(mode, env) {
return {};
},
entryName: 'index',
root: '/',
routes: null,
local: true,
server: '',
webSocketServer: 'http://localhost:8080',
titlename: '积木 | 数据转换平台',
favicon: 'favicon.ico',
proxyTarget: 'http://localhost:8080',
distBasePath: './src/main/resources/lib',
htmlPath: './src/main/resources/WEB-INF/view',
homePath: undefined
};
function getChoerodonConfig(configFile) {
var customizedConfig = _fs2['default'].existsSync(configFile) ? require(configFile) : {};
return (0, _extends3['default'])({}, defaultConfig, customizedConfig);
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
function defaultTheme(env) {
var iconUrl = env === 'development' ? '/dis/fonts/icomoon' : '/lib/dist/dis/fonts/icomoon';
return {
'primary-color': '#3f51b5',
'c7n-prefix': 'c7n',
'icon-url': JSON.stringify(iconUrl)
};
}
exports['default'] = defaultTheme;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getEnterPointsConfig;
var enterPoints = {
API_HOST: 'localhost:http://localhost:8080', // api base url
AUTH_HOST: 'localhost:http://localhost:8080/oauth', // login url
CLIENT_ID: 'localhost:clientId', // unused
LOCAL: 'localhost:local',
HEADER_TITLE_NAME: 'localhost:headertitlename', // unused
COOKIE_SERVER: 'localhost:cookieServer',
VERSION: 'localhost:version',
TITLE_NAME: 'localhost:titlename', // html title
FILE_SERVER: 'localhost:fileserver', // unused
WEBSOCKET_SERVER: 'localhost:wsserver' // websocket server
};
function getEnterPointsConfig() {
return enterPoints;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function normalizeToSassVariables(modifyVarsOptions) {
var modifyVars = modifyVarsOptions.modifyVars,
options = (0, _objectWithoutProperties3['default'])(modifyVarsOptions, ['modifyVars']);
if (modifyVars) {
options.data = Object.keys(modifyVars).map(function (key) {
return '$' + key + ': ' + modifyVars[key] + ';';
}).join('');
}
return options;
}
exports['default'] = function (postcssOptions, loaderOptions) {
return [{
test: /\.css$/,
use: [{
loader: 'css-loader',
options: {
restructuring: false,
autoprefixer: false
}
}, {
loader: 'postcss-loader',
options: postcssOptions
}]
}, {
test: /\.less$/,
use: [{
loader: 'css-loader',
options: {
autoprefixer: false
}
}, {
loader: 'postcss-loader',
options: postcssOptions
}, {
loader: 'less-loader',
options: loaderOptions
}]
}, {
test: /\.scss$/,
use: [{
loader: 'css-loader',
options: {
autoprefixer: false
}
}, {
loader: 'postcss-loader',
options: postcssOptions
}, {
loader: 'sass-loader',
options: normalizeToSassVariables(loaderOptions)
}]
}];
};
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = ts;
function ts() {
return {
target: 'es6',
jsx: 'preserve',
moduleResolution: 'node',
declaration: false
};
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = getWebpackCommonConfig;
var _path = require('path');
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _extractTextWebpackPlugin = require('extract-text-webpack-plugin');
var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
var _friendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
var _friendlyErrorsWebpackPlugin2 = _interopRequireDefault(_friendlyErrorsWebpackPlugin);
var _uglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin');
var _uglifyjsWebpackPlugin2 = _interopRequireDefault(_uglifyjsWebpackPlugin);
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _getBabelCommonConfig = require('./getBabelCommonConfig');
var _getBabelCommonConfig2 = _interopRequireDefault(_getBabelCommonConfig);
var _getTSCommonConfig = require('./getTSCommonConfig');
var _getTSCommonConfig2 = _interopRequireDefault(_getTSCommonConfig);
var _context = require('../bin/common/context');
var _context2 = _interopRequireDefault(_context);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var jsFileName = 'dis/[name].[hash:8].js';
var jsChunkFileName = 'dis/chunks/[name].[chunkhash:5].chunk.js';
var cssFileName = 'dis/[name].[contenthash:8].css';
var assetFileName = 'dis/assets/[name].[hash:8].[ext]';
function getAssetLoader(env, mimetype) {
var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10000;
return {
loader: 'url-loader',
options: {
limit: limit,
mimetype: mimetype,
name: assetFileName,
publicPath: env === 'production' ? '/lib/dist/' : undefined
}
};
}
function getWebpackCommonConfig(mode, env) {
var isDev = _context2['default'].isDev;
var babelOptions = (0, _getBabelCommonConfig2['default'])(mode, env);
var tsOptions = (0, _getTSCommonConfig2['default'])();
var plugins = [new _webpack2['default'].optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'dis/[name].[hash:5].js',
minChunks: Infinity
}), new _extractTextWebpackPlugin2['default']({
filename: cssFileName,
disable: false,
allChunks: true
}), new _caseSensitivePathsWebpackPlugin2['default'](), new _webpack2['default'].ProgressPlugin(function (percentage, msg, addInfo) {
var stream = process.stderr;
if (stream.isTTY && percentage < 0.71) {
stream.cursorTo(0);
stream.write('\uD83D\uDCE6 ' + _chalk2['default'].magenta(msg) + ' (' + _chalk2['default'].magenta(addInfo) + ')');
stream.clearLine(1);
} else if (percentage === 1) {
/* eslint-disable */
console.log(_chalk2['default'].green('\nwebpack: bundle build is now finished.'));
/* eslint-enable */
}
}), new _friendlyErrorsWebpackPlugin2['default'](), new _webpack2['default'].ProvidePlugin({
Choerodon: isDev ? (0, _path.join)(process.cwd(), 'src/containers/common') : (0, _path.join)(__dirname, '../containers/common')
})];
if (env === 'production') {
plugins.push(new _webpack2['default'].LoaderOptionsPlugin({
minimize: true
}), new _uglifyjsWebpackPlugin2['default']({
parallel: true,
cache: true,
uglifyOptions: {
output: {
comments: false
},
compress: {
warnings: false
}
}
}));
}
return {
output: {
filename: jsFileName,
chunkFilename: jsChunkFileName
},
resolve: {
modules: ['node_modules', (0, _path.join)(__dirname, '../../node_modules')],
extensions: ['.web.tsx', '.web.ts', '.web.jsx', '.web.js', '.ts', '.tsx', '.js', '.jsx', '.json']
},
resolveLoader: {
modules: ['node_modules', (0, _path.join)(__dirname, '../../node_modules')]
},
node: {
fs: 'empty'
},
module: {
noParse: [/moment.js/],
rules: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: babelOptions
}, {
test: /\.jsx$/,
loader: 'babel-loader',
options: babelOptions
}, {
test: /\.tsx?$/,
use: [{
loader: 'babel-loader',
options: babelOptions
}, {
loader: 'ts-loader',
options: {
transpileOnly: true,
compilerOptions: tsOptions
}
}]
}, {
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
use: getAssetLoader(env, 'application/font-woff')
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
use: getAssetLoader(env, 'application/font-woff')
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
use: getAssetLoader(env, 'application/octet-stream')
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
use: getAssetLoader(env, 'application/vnd.ms-fontobject')
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
use: getAssetLoader(env, 'image/svg+xml')
}, {
test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i,
use: getAssetLoader(env)
}, {
test: /\.json$/,
loader: 'json-loader'
}]
},
plugins: plugins
};
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports['default'] = updateWebpackConfig;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _extractTextWebpackPlugin = require('extract-text-webpack-plugin');
var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
var _htmlWebpackPlugin = require('html-webpack-plugin');
var _htmlWebpackPlugin2 = _interopRequireDefault(_htmlWebpackPlugin);
var _context = require('../bin/common/context');
var _context2 = _interopRequireDefault(_context);
var _getStyleLoadersConfig = require('./getStyleLoadersConfig');
var _getStyleLoadersConfig2 = _interopRequireDefault(_getStyleLoadersConfig);
var _getEnterPointsConfig = require('./getEnterPointsConfig');
var _getEnterPointsConfig2 = _interopRequireDefault(_getEnterPointsConfig);
var _getWebpackCommonConfig = require('./getWebpackCommonConfig');
var _getWebpackCommonConfig2 = _interopRequireDefault(_getWebpackCommonConfig);
var _getDefaultTheme = require('./getDefaultTheme');
var _getDefaultTheme2 = _interopRequireDefault(_getDefaultTheme);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var choerodonLib = (0, _path.join)(__dirname, '..');
function getFilePath(file) {
var isDev = _context2['default'].isDev;
var filePath = (0, _path.join)(process.cwd(), file);
if (_fs2['default'].existsSync(filePath)) {
return filePath;
} else if (isDev) {
return (0, _path.join)(process.cwd(), 'src', file);
} else {
return (0, _path.join)(__dirname, '..', file);
}
}
function updateWebpackConfig(mode, env) {
var webpackConfig = (0, _getWebpackCommonConfig2['default'])(mode, env);
var choerodonConfig = _context2['default'].choerodonConfig;
var theme = choerodonConfig.theme,
output = choerodonConfig.output,
root = choerodonConfig.root,
enterPoints = choerodonConfig.enterPoints,
server = choerodonConfig.server,
webSocketServer = choerodonConfig.webSocketServer,
local = choerodonConfig.local,
postcssConfig = choerodonConfig.postcssConfig,
entryName = choerodonConfig.entryName,
titlename = choerodonConfig.titlename,
htmlTemplate = choerodonConfig.htmlTemplate,
favicon = choerodonConfig.favicon;
var styleLoadersConfig = (0, _getStyleLoadersConfig2['default'])(postcssConfig, {
sourceMap: mode === 'start',
modifyVars: (0, _extends3['default'])({}, (0, _getDefaultTheme2['default'])(env), theme)
});
var defaultEnterPoints = void 0;
webpackConfig.entry = {};
if (mode === 'start') {
webpackConfig.output.publicPath = '/';
webpackConfig.devtool = 'cheap-module-eval-source-map';
webpackConfig.watch = true;
styleLoadersConfig.forEach(function (config) {
webpackConfig.module.rules.push({
test: config.test,
use: ['style-loader'].concat((0, _toConsumableArray3['default'])(config.use))
});
});
defaultEnterPoints = {
API_HOST: server,
AUTH_HOST: server,
LOCAL: local,
VERSION: '本地',
TITLE_NAME: titlename,
WEBSOCKET_SERVER: webSocketServer
};
} else if (mode === 'build') {
webpackConfig.output.publicPath = root;
webpackConfig.output.path = (0, _path.join)(process.cwd(), 'src', 'main', 'resources', 'lib', output);
styleLoadersConfig.forEach(function (config) {
webpackConfig.module.rules.push({
test: config.test,
use: _extractTextWebpackPlugin2['default'].extract({
use: config.use
})
});
});
// defaultEnterPoints = getEnterPointsConfig();
defaultEnterPoints = {
API_HOST: server,
AUTH_HOST: server,
LOCAL: local,
VERSION: '本地',
TITLE_NAME: titlename,
WEBSOCKET_SERVER: ''
};
}
/* eslint-enable no-param-reassign */
var mergedEnterPoints = (0, _extends3['default'])({
NODE_ENV: env
}, defaultEnterPoints, enterPoints(mode, env));
var defines = Object.keys(mergedEnterPoints).reduce(function (obj, key) {
obj['process.env.' + key] = JSON.stringify(process.env[key] || mergedEnterPoints[key]);
return obj;
}, {});
var customizedWebpackConfig = choerodonConfig.webpackConfig(webpackConfig, _webpack2['default']);
if (customizedWebpackConfig.entry[entryName]) {
throw new Error('Should not set `webpackConfig.entry.' + entryName + '`!');
}
var entryPath = (0, _path.join)(choerodonLib, '..', 'tmp', 'entry.' + entryName + '.js');
var entryWithoutSiderPath = (0, _path.join)(choerodonLib, '..', 'tmp', 'entry.withoutsider.js');
customizedWebpackConfig.entry[entryName] = entryPath;
customizedWebpackConfig.entry.withoutsider = entryWithoutSiderPath;
customizedWebpackConfig.plugins.push(new _webpack2['default'].DefinePlugin(defines), new _htmlWebpackPlugin2['default']({
title: process.env.TITLE_NAME || titlename,
template: getFilePath(htmlTemplate),
// fileName: 'index.html',
inject: true,
chunks: ['vendor', entryName],
favicon: getFilePath(favicon),
minify: {
html5: true,
collapseWhitespace: true,
removeComments: true,
removeTagWhitespace: true,
removeEmptyAttributes: true,
removeStyleLinkTypeAttributes: true
}
}), new _htmlWebpackPlugin2['default']({
title: process.env.TITLE_NAME || titlename,
template: getFilePath(htmlTemplate),
chunks: ['vendor', 'withoutsider'],
filename: 'withoutsider.html',
inject: true,
favicon: getFilePath(favicon),
minify: {
html5: true,
collapseWhitespace: true,
removeComments: true,
removeTagWhitespace: true,
removeEmptyAttributes: true,
removeStyleLinkTypeAttributes: true
}
}));
return customizedWebpackConfig;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCookieToken = getCookieToken;
exports.setAccessToken = setAccessToken;
exports.getAccessToken = getAccessToken;
exports.removeAccessToken = removeAccessToken;
var _cookie = require('./cookie');
var _constants = require('./constants');
var cachedToken = null;
var localReg = /localhost/g;
function getCookieToken() {
var option = {
path: '/'
};
var token = (0, _cookie.getCookie)(_constants.ACCESS_TOKEN, option);
if (token && cachedToken && token !== cachedToken) {
return null;
}
return token;
}
/**
* 前端存储cookie token
*/
function setAccessToken(token, tokenType, expiresIn) {
var option = {
path: '/'
};
if (expiresIn) {
var expires = expiresIn * 1000;
option.expires = new Date(Date.now() + expires);
}
if (!_constants.LOCAL && !localReg.test(window.location.host) && (0, _cookie.getCookie)(_constants.ACCESS_DOMAIN) === null) {
option.domain = _constants.COOKIE_SERVER;
}
(0, _cookie.setCookie)(_constants.ACCESS_TOKEN, token, option);
(0, _cookie.setCookie)(_constants.TOKEN_TYPE, tokenType, option);
cachedToken = token;
}
/**
* 获取cookie token
*/
function getAccessToken() {
var option = {
path: '/'
};
var accessToken = getCookieToken();
var tokenType = (0, _cookie.getCookie)(_constants.TOKEN_TYPE, option);
if (accessToken && tokenType) {
return tokenType + ' ' + accessToken;
}
return null;
}
/**
* 移除token
*/
function removeAccessToken() {
var option = {
path: '/'
};
if (!_constants.LOCAL && !localReg.test(window.location.host)) {
option.domain = _constants.COOKIE_SERVER;
}
(0, _cookie.removeCookie)(_constants.ACCESS_TOKEN, option);
(0, _cookie.removeCookie)(_constants.TOKEN_TYPE, option);
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.authorize = authorize;
exports.logout = logout;
var _constants = require('./constants');
var _accessToken = require('./accessToken');
function authorize() {
window.top.location = '' + _constants.AUTH_URL;
}
function logout() {
var token = (0, _accessToken.getCookieToken)();
var logoutUrl = _constants.AUTH_HOST + '/logout';
if (token) {
logoutUrl += '?' + _constants.ACCESS_TOKEN + '=' + (0, _accessToken.getCookieToken)();
}
(0, _accessToken.removeAccessToken)();
localStorage.clear();
sessionStorage.clear();
window.location = logoutUrl;
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = checkPassword;
var _intl = require('./intl');
function checkPassword(passwordPolicy, value, callback, userName) {
if (passwordPolicy) {
var check = passwordPolicy.enablePassword,
minLength = passwordPolicy.minLength,
maxLength = passwordPolicy.maxLength,
upcount = passwordPolicy.uppercaseCount,
spcount = passwordPolicy.specialCharCount,
lowcount = passwordPolicy.lowercaseCount,
notEqualsUsername = passwordPolicy.notUsername,
regexCheck = passwordPolicy.regularExpression;
if (value && check) {
var len = 0;
var rs = '';
var sp = void 0;
var up = 0;
var low = 0;
for (var i = 0; i < value.length; i += 1) {
var a = value.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2;
} else {
len += 1;
}
}
var pattern = new RegExp('[-~`@#$%^&*_=+|/()<>,.;:!]');
for (var _i = 0; _i < value.length; _i += 1) {
rs += value.substr(_i, 1).replace(pattern, '');
sp = value.length - rs.length;
}
if (/[A-Z]/i.test(value)) {
var ups = value.match(/[A-Z]/g);
up = ups ? ups.length : 0;
}
if (/[a-z]/i.test(value)) {
var lows = value.match(/[a-z]/g);
low = lows ? lows.length : 0;
}
if (minLength && len < minLength) {
callback((0, _intl.getMessage)('\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A' + minLength, 'Password length is at least ' + minLength));
return;
}
if (maxLength && len > maxLength) {
callback((0, _intl.getMessage)('\u5BC6\u7801\u957F\u5EA6\u6700\u591A\u4E3A' + maxLength, 'Password length is upto ' + maxLength));
return;
}
if (upcount && up < upcount) {
callback((0, _intl.getMessage)('\u5927\u5199\u5B57\u6BCD\u81F3\u5C11\u4E3A' + upcount, 'At least for a capital letter ' + upcount));
return;
}
if (lowcount && low < lowcount) {
callback((0, _intl.getMessage)('\u5C0F\u5199\u5B57\u6BCD\u81F3\u5C11\u4E3A' + lowcount, 'At least for a lower-case letters ' + lowcount));
return;
}
if (notEqualsUsername && value === userName) {
callback((0, _intl.getMessage)('密码不能与账号相同', 'password can not equal with the userName'));
return;
}
if (regexCheck) {
var regex = new RegExp(regexCheck);
if (regex.test(value)) {
callback();
} else {
callback((0, _intl.getMessage)('正则不匹配', 'can not test regex'));
}
}
if (spcount && sp < spcount) {
callback((0, _intl.getMessage)('\u7279\u6B8A\u5B57\u7B26\u81F3\u5C11\u4E3A' + spcount, 'At least for special characters ' + spcount));
} else {
callback();
}
} else {
callback();
}
} else {
callback();
}
}
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var PREFIX_CLS = exports.PREFIX_CLS = 'c7n';
var ACCESS_TOKEN = exports.ACCESS_TOKEN = 'access_token';
var TOKEN_TYPE = exports.TOKEN_TYPE = 'token_type';
var ACCESS_DOMAIN = exports.ACCESS_DOMAIN = 'domain';
var STRING_DEVIDER = exports.STRING_DEVIDER = '__@.@__';
var API_HOST = exports.API_HOST = '' + process.env.API_HOST;
var AUTH_HOST = exports.AUTH_HOST = '' + process.env.AUTH_HOST;
var CLIENT_ID = exports.CLIENT_ID = '' + process.env.CLIENT_ID;
var AUTH_URL = exports.AUTH_URL = AUTH_HOST + '/login';
var LOCAL = exports.LOCAL = JSON.parse(process.env.LOCAL || 'true');
var COOKIE_SERVER = exports.COOKIE_SERVER = '' + process.env.COOKIE_SERVER;
var FILE_SERVER = exports.FILE_SERVER = '' + process.env.FILE_SERVER;
var WEBSOCKET_SERVER = exports.WEBSOCKET_SERVER = '' + process.env.WEBSOCKET_SERVER;
var HEADER_TITLE_NAME = exports.HEADER_TITLE_NAME = '' + (process.env.HEADER_TITLE_NAME || process.env.TITLE_NAME || 'Choerodon');
var USE_DASHBOARD = exports.USE_DASHBOARD = JSON.parse(process.env.USE_DASHBOARD || 'false');
var USE_GUIDE = exports.USE_GUIDE = JSON.parse(process.env.USE_GUIDE || 'false');
var NODE_ENV = exports.NODE_ENV = '' + process.env.NODE_ENV;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeCookie = exports.getCookie = exports.setCookie = undefined;
var _universalCookie = require('universal-cookie');
var _universalCookie2 = _interopRequireDefault(_universalCookie);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var cookies = new _universalCookie2['default']();
var setCookie = function setCookie(name, value, option) {
return cookies.set(name, value, option);
};
var getCookie = function getCookie(name, option) {
return cookies.get(name, option);
};
var removeCookie = function removeCookie(name, option) {
return cookies.remove(name, option);
};
exports.setCookie = setCookie;
exports.getCookie = getCookie;
exports.removeCookie = removeCookie;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.warning = exports.guide = exports.dashboard = exports.authorize = exports.historyReplaceMenu = exports.historyPushMenu = exports.randomString = exports.handleResponseError = exports.checkPassword = exports.prompt = exports.logout = exports.getMessage = exports.intl = exports.languageChange = exports.removeAccessToken = exports.getAccessToken = exports.setAccessToken = exports.removeCookie = exports.getCookie = exports.setCookie = exports.fileServer = exports.STRING_DEVIDER = exports.WEBSOCKET_SERVER = exports.FILE_SERVER = exports.API_HOST = exports.AUTH_URL = exports.ACCESS_TOKEN = undefined;
var _message2 = require('choerodon-hap-ui/lib/message');
var _message3 = _interopRequireDefault(_message2);
require('choerodon-hap-ui/lib/message/style');
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _authorize = require('./authorize');
var _accessToken = require('./accessToken');
var _cookie = require('./cookie');
var _constants = require('./constants');
var _intl = require('./intl');
var _checkPassword = require('./checkPassword');
var _checkPassword2 = _interopRequireDefault(_checkPassword);
var _warning = require('../../common/warning');
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
// 提示错误信息
function prompt(content) {
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'info';
var duration = arguments[2];
var placement = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'leftBottom';
var onClose = arguments[4];
var messageType = ['success', 'error', 'info', 'warning', 'warn', 'loading'];
if (messageType.indexOf(type) !== -1) {
_message3['default'][type](content, duration, onClose, placement);
}
}
// 处理错误相应
function handleResponseError(error) {
var response = error.response;
if (response) {
var status = response.status;
switch (status) {
case 400:
{
var mess = response.data.message;
_message3['default'].error(mess);
break;
}
default:
break;
}
}
}
// 生成指定长度的随机字符串
function randomString() {
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;
var code = '';
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var maxPos = chars.length;
for (var i = 0; i < len; i += 1) {
code += chars.charAt(Math.floor(Math.random() * (maxPos + 1)));
}
return code;
}
function historyPushMenu(history, path, domain) {
var method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'push';
method = 'push';
if (!domain || _constants.LOCAL) {
history[method](path);
} else if (!path) {
window.location = '' + domain;
} else {
var reg = new RegExp(domain, 'g');
if (reg.test(window.location.host)) {
history[method](path);
} else {
window.location = domain + '/#' + path;
}
}
}
function historyReplaceMenu(history, path, uri) {
historyPushMenu(history, path, uri, 'replace');
}
function fileServer(path) {
return _url2['default'].resolve(_constants.FILE_SERVER, path || '');
}
exports.ACCESS_TOKEN = _constants.ACCESS_TOKEN;
exports.AUTH_URL = _constants.AUTH_URL;
exports.API_HOST = _constants.API_HOST;
exports.FILE_SERVER = _constants.FILE_SERVER;
exports.WEBSOCKET_SERVER = _constants.WEBSOCKET_SERVER;
exports.STRING_DEVIDER = _constants.STRING_DEVIDER;
exports.fileServer = fileServer;
exports.setCookie = _cookie.setCookie;
exports.getCookie = _cookie.getCookie;
exports.removeCookie = _cookie.removeCookie;
exports.setAccessToken = _accessToken.setAccessToken;
exports.getAccessToken = _accessToken.getAccessToken;
exports.removeAccessToken = _accessToken.removeAccessToken;
exports.languageChange = _intl.intl;
exports.intl = _intl.intl;
exports.getMessage = _intl.getMessage;
exports.logout = _authorize.logout;
exports.prompt = prompt;
exports.checkPassword = _checkPassword2['default'];
exports.handleResponseError = handleResponseError;
exports.randomString = randomString;
exports.historyPushMenu = historyPushMenu;
exports.historyReplaceMenu = historyReplaceMenu;
exports.authorize = _authorize.authorize;
exports.dashboard = _constants.USE_DASHBOARD;
exports.guide = _constants.USE_GUIDE;
exports.warning = _warning2['default'];
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getMessage = exports.intl = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactIntl = require('react-intl');
var _AppState = require('../stores/AppState');
var _AppState2 = _interopRequireDefault(_AppState);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* 多语言
*/
function intl(id, otherProps) {
return _react2['default'].createElement(_reactIntl.FormattedMessage, (0, _extends3['default'])({ id: id }, otherProps));
}
/**
* @deprecated
* 返回多语言字符串
*/
function getMessage(zh, en) {
var language = _AppState2['default'].currentLanguage.split('_')[0];
if (language === 'zh') {
return zh;
} else if (language === 'en') {
return en;
}
return false;
}
exports.intl = intl;
exports.getMessage = getMessage;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _modal = require('choerodon-hap-ui/lib/modal');
var _modal2 = _interopRequireDefault(_modal);
require('choerodon-hap-ui/lib/modal/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _authorize = require('./authorize');
var _axios = require('../components/axios');
var _axios2 = _interopRequireDefault(_axios);
var _AppState = require('../stores/AppState');
var _AppState2 = _interopRequireDefault(_AppState);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var modalKey = _modal2['default'].key();
function repeatLigin() {
_modal2['default'].open({
key: modalKey,
title: '提示',
children: '异地登录,请重新登录',
okCancel: false,
onOk: function onOk() {
if (_AppState2['default'].isCas) {
(0, _authorize.logout)();
} else {
_axios2['default'].post('/logout').then(function () {
(0, _authorize.authorize)();
});
}
}
});
}
exports['default'] = repeatLigin;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _modal = require('choerodon-hap-ui/lib/modal');
var _modal2 = _interopRequireDefault(_modal);
require('choerodon-hap-ui/lib/modal/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _authorize = require('./authorize');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var modalKey = _modal2['default'].key();
function sessionExpiredLogin() {
_modal2['default'].open({
key: modalKey,
title: '提示',
children: '登录超时,请重新登录',
okCancel: false,
onOk: function onOk() {
(0, _authorize.authorize)();
},
closeable: true
});
}
window.sessionExpiredLogin = sessionExpiredLogin;
exports['default'] = sessionExpiredLogin;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createAxiosInsByModuleName = require('../util/createAxiosInsByModuleName');
var _createAxiosInsByModuleName2 = _interopRequireDefault(_createAxiosInsByModuleName);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var instance = (0, _createAxiosInsByModuleName2['default'])('SINGLE_APP_SERVER');
exports['default'] = instance;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Axios = require('./Axios');
var _Axios2 = _interopRequireDefault(_Axios);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Axios2['default'];
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _modalContainer = require('choerodon-hap-ui/lib/modal-container');
var _modalContainer2 = _interopRequireDefault(_modalContainer);
var _spin = require('choerodon-hap-ui/lib/spin');
var _spin2 = _interopRequireDefault(_spin);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _class;
require('choerodon-hap-ui/lib/modal-container/style');
require('choerodon-hap-ui/lib/spin/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouterDom = require('react-router-dom');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Loading = (0, _reactRouterDom.withRouter)(_class = function (_Component) {
(0, _inherits3['default'])(Loading, _Component);
function Loading() {
(0, _classCallCheck3['default'])(this, Loading);
return (0, _possibleConstructorReturn3['default'])(this, (Loading.__proto__ || Object.getPrototypeOf(Loading)).apply(this, arguments));
}
(0, _createClass3['default'])(Loading, [{
key: 'render',
value: function render() {
return [_react2['default'].createElement(
'div',
{ key: 'entry-loading', style: { position: 'absolute', top: 0, right: 0, bottom: 0, left: 0, margin: 'auto', width: 30, height: 30 } },
_react2['default'].createElement(_spin2['default'], null)
), _react2['default'].createElement(_modalContainer2['default'], { key: 'entry-modal-container' })];
}
}]);
return Loading;
}(_react.Component)) || _class;
exports['default'] = Loading;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _button = require('choerodon-hap-ui/lib/button');
var _button2 = _interopRequireDefault(_button);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
require('choerodon-hap-ui/lib/button/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouterDom = require('react-router-dom');
require('./style/403.scss');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var NoAccess = function (_Component) {
(0, _inherits3['default'])(NoAccess, _Component);
function NoAccess() {
(0, _classCallCheck3['default'])(this, NoAccess);
return (0, _possibleConstructorReturn3['default'])(this, (NoAccess.__proto__ || Object.getPrototypeOf(NoAccess)).apply(this, arguments));
}
(0, _createClass3['default'])(NoAccess, [{
key: 'render',
value: function render() {
return _react2['default'].createElement(
'div',
{ className: 'c7n-403-page' },
_react2['default'].createElement('div', { className: 'c7n-403-page-banner' }),
_react2['default'].createElement(
'div',
{ className: 'c7n-403-page-banner-text' },
_react2['default'].createElement(
'span',
null,
'\u62B1\u6B49 \uFF0C\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\uFF01'
),
_react2['default'].createElement(
_reactRouterDom.Link,
{ to: '/' },
_react2['default'].createElement(
_button2['default'],
{ color: 'blue' },
'\u8FD4\u56DE\u9996\u9875'
)
)
)
);
}
}]);
return NoAccess;
}(_react.Component);
exports['default'] = NoAccess;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _button = require('choerodon-hap-ui/lib/button');
var _button2 = _interopRequireDefault(_button);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
require('choerodon-hap-ui/lib/button/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouterDom = require('react-router-dom');
require('./style/404.scss');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var NoMatch = function (_Component) {
(0, _inherits3['default'])(NoMatch, _Component);
function NoMatch() {
(0, _classCallCheck3['default'])(this, NoMatch);
return (0, _possibleConstructorReturn3['default'])(this, (NoMatch.__proto__ || Object.getPrototypeOf(NoMatch)).apply(this, arguments));
}
(0, _createClass3['default'])(NoMatch, [{
key: 'render',
value: function render() {
return _react2['default'].createElement(
'div',
{ className: 'c7n-404-page' },
_react2['default'].createElement('div', { className: 'c7n-404-page-banner' }),
_react2['default'].createElement(
'div',
{ className: 'c7n-404-page-banner-text' },
_react2['default'].createElement(
'span',
null,
'\u62B1\u6B49 \uFF0C\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\uFF01'
),
_react2['default'].createElement(
_reactRouterDom.Link,
{ to: '/' },
_react2['default'].createElement(
_button2['default'],
{ color: 'blue' },
'\u8FD4\u56DE\u9996\u9875'
)
)
)
);
}
}]);
return NoMatch;
}(_react.Component);
exports['default'] = NoMatch;
\ No newline at end of file
.c7n-403-page {
padding-top: 110px;
width: 800px;
margin: 0 auto;
text-align: right;
height: 100%;
&-banner {
width: 100%;
height: 60%;
background-image: url('./403.svg');
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
&-text {
text-align: center;
margin-top: 32px;
> span {
font-weight: 400;
font-size: 24px;
color: #000;
text-align: right;
margin-right: 10px;
}
button {
line-height: 24px;
top: 2px;
}
}
}
}
This diff is collapsed.
.c7n-404-page {
padding-top: 110px;
width: 800px;
margin: 0 auto;
text-align: right;
height: 100%;
&-banner {
width: 100%;
height: 60%;
background-image: url('./404.svg');
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
&-text {
text-align: center;
margin-top: 32px;
> span {
font-weight: 400;
font-size: 24px;
color: #000;
text-align: right;
margin-right: 10px;
}
button {
line-height: 24px;
top: 3px;
}
}
}
}
This diff is collapsed.
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _Logo = require('./Logo');
var _Logo2 = _interopRequireDefault(_Logo);
var _SearchInputWrapper = require('./SearchInputWrapper');
var _SearchInputWrapper2 = _interopRequireDefault(_SearchInputWrapper);
var _UserPreferences = require('./UserPreferences');
var _UserPreferences2 = _interopRequireDefault(_UserPreferences);
var _Nav = require('./Nav');
var _Nav2 = _interopRequireDefault(_Nav);
require('./style');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Header = function (_PureComponent) {
(0, _inherits3['default'])(Header, _PureComponent);
function Header() {
(0, _classCallCheck3['default'])(this, Header);
return (0, _possibleConstructorReturn3['default'])(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));
}
(0, _createClass3['default'])(Header, [{
key: 'render',
value: function render() {
return _react2['default'].createElement(
'div',
{ className: 'master-head-wrap' },
_react2['default'].createElement(
'div',
{ className: 'master-head-left' },
_react2['default'].createElement(_Logo2['default'], null)
),
_react2['default'].createElement(
'div',
{ className: 'master-head-center' },
_react2['default'].createElement(_SearchInputWrapper2['default'], null)
),
_react2['default'].createElement(
'div',
{ className: 'master-head-right' },
_react2['default'].createElement(_UserPreferences2['default'], null)
)
);
}
}]);
return Header;
}(_react.PureComponent);
exports['default'] = Header;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _dec, _class;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _mobxReact = require('mobx-react');
var _Logo2x = require('./style/icons/Logo@2x.png');
var _Logo2x2 = _interopRequireDefault(_Logo2x);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Logo = (_dec = (0, _mobxReact.inject)('AppState', 'MenuStore'), _dec(_class = (0, _mobxReact.observer)(_class = function (_Component) {
(0, _inherits3['default'])(Logo, _Component);
function Logo() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3['default'])(this, Logo);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref = Logo.__proto__ || Object.getPrototypeOf(Logo)).call.apply(_ref, [this].concat(args))), _this), _this.onHideMenu = function () {
var _this$props = _this.props,
AppState = _this$props.AppState,
MenuStore = _this$props.MenuStore;
var hideMenu = AppState.hideMenu;
if (hideMenu) {
AppState.setHideMenu(false);
} else {
AppState.setHideMenu(true);
MenuStore.setCollapsed(false);
MenuStore.setOpenKeys([]);
}
}, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret);
}
(0, _createClass3['default'])(Logo, [{
key: 'render',
value: function render() {
var AppState = this.props.AppState;
return _react2['default'].createElement(
'div',
{ className: 'header-logo-wrap' },
_react2['default'].createElement('div', { className: 'header-logo-icon', onClick: this.onHideMenu, style: { backgroundImage: 'url( ' + _Logo2x2['default'] + ')' } })
);
}
}]);
return Logo;
}(_react.Component)) || _class) || _class);
exports['default'] = Logo;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _dropdown = require('choerodon-ui/lib/dropdown');
var _dropdown2 = _interopRequireDefault(_dropdown);
var _icon = require('choerodon-ui/lib/icon');
var _icon2 = _interopRequireDefault(_icon);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _dec, _class;
require('choerodon-ui/lib/dropdown/style');
require('choerodon-ui/lib/icon/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _mobxReact = require('mobx-react');
var _reactRouterDom = require('react-router-dom');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
require('./style');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Nav = (_dec = (0, _mobxReact.inject)('MenuStore', 'AppState'), (0, _reactRouterDom.withRouter)(_class = _dec(_class = (0, _mobxReact.observer)(_class = function (_Component) {
(0, _inherits3['default'])(Nav, _Component);
function Nav() {
(0, _classCallCheck3['default'])(this, Nav);
return (0, _possibleConstructorReturn3['default'])(this, (Nav.__proto__ || Object.getPrototypeOf(Nav)).apply(this, arguments));
}
(0, _createClass3['default'])(Nav, [{
key: 'handleLink',
value: function handleLink(tab) {
var _props = this.props,
MenuStore = _props.MenuStore,
isTabMode = _props.AppState.isTabMode;
var selectedKeys = MenuStore.selectedKeys;
// const isReact = tab.symbol === 'REACT';
var type = tab.symbol;
if (selectedKeys.length && selectedKeys[0] === tab.functionCode && isTabMode) return;
var LINK_MAP = {
REACT: '/' + tab.url,
HTML: '/iframe/' + tab.functionCode
};
var link = LINK_MAP[type] || '/';
// const link = isReact
// ? `/${tab.url}`
// : `/iframe/${tab.functionCode}`;
this.props.history.push(link);
if (link === '/') {
MenuStore.setActiveMenu({});
}
}
}, {
key: 'handleCloseTab',
value: function handleCloseTab(tab, event) {
var MenuStore = this.props.MenuStore;
var selectedKeys = MenuStore.selectedKeys;
if (event) event.stopPropagation();
if (selectedKeys.length && selectedKeys[0] === tab.functionCode) {
var desTab = MenuStore.getNextTab(tab);
var desUrl = void 0;
if (desTab.functionCode !== 'HOME_PAGE') {
var LINK_MAP = {
REACT: '/' + desTab.url,
HTML: '/iframe/' + desTab.functionCode
};
// if (desTab.symbol === '1') {
// desUrl = `/${desTab.url}`;
// } else {
// desUrl = `/iframe/${desTab.functionCode}`;
// }
desUrl = LINK_MAP[desTab.symbol];
} else {
desUrl = '/';
MenuStore.setActiveMenu({});
}
this.props.history.push(desUrl);
}
MenuStore.closeTabAndClearCacheByCacheKey(tab);
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var _props2 = this.props,
pathname = _props2.location.pathname,
MenuStore = _props2.MenuStore,
isTabMode = _props2.AppState.isTabMode;
var tabs = MenuStore.tabs,
activeMenu = MenuStore.activeMenu,
collapsed = MenuStore.collapsed;
var isHome = pathname === '/';
var activeIndex = tabs.findIndex(function (tab) {
return pathname === '/' + tab.url || pathname === '/iframe/' + tab.functionCode;
});
return isTabMode ? null : _react2['default'].createElement(
_dropdown2['default'],
{
trigger: ['click'],
overlay: _react2['default'].createElement(
'ul',
{ className: 'nav-wrapper' },
tabs.filter(function (v) {
return !!v;
}).map(function (tab, i) {
return _react2['default'].createElement(
'li',
{
key: tab.functionCode,
className: (0, _classnames2['default'])({
tab: true,
'tab-active': pathname === '/' + tab.url || pathname === '/iframe/' + tab.functionCode,
'tab-hover': pathname !== '/' + tab.url && pathname !== '/iframe/' + tab.functionCode,
'tab-active-before': activeIndex >= 1 && i === activeIndex - 1,
'tab-active-after': activeIndex >= 0 && i === activeIndex + 1
}),
onClick: _this2.handleLink.bind(_this2, tab)
},
_react2['default'].createElement(
'div',
{ className: 'li-wrapper', style: { positon: 'relative' } },
_react2['default'].createElement(
'div',
{
style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }
},
tab.text
),
tab.functionCode === 'HOME_PAGE' ? null : _react2['default'].createElement(_icon2['default'], {
type: 'close',
style: { fontSize: 14, marginLeft: 20 },
onClick: _this2.handleCloseTab.bind(_this2, tab)
})
)
);
})
)
},
_react2['default'].createElement(
'span',
{ className: 'header-nav-action' },
_react2['default'].createElement(
'span',
null,
'\u9875\u9762\u5BFC\u822A'
),
_react2['default'].createElement(_icon2['default'], { type: 'baseline-arrow_drop_down' })
)
);
}
}]);
return Nav;
}(_react.Component)) || _class) || _class) || _class);
exports['default'] = Nav;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _icon = require('choerodon-hap-ui/lib/icon');
var _icon2 = _interopRequireDefault(_icon);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _select = require('choerodon-hap-ui/lib/select');
var _select2 = _interopRequireDefault(_select);
var _dec, _class, _desc, _value, _class2, _descriptor;
require('choerodon-hap-ui/lib/icon/style');
require('choerodon-hap-ui/lib/select/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _mobx = require('mobx');
var _mobxReact = require('mobx-react');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _initDefineProp(target, property, descriptor, context) {
if (!descriptor) return;
Object.defineProperty(target, property, {
enumerable: descriptor.enumerable,
configurable: descriptor.configurable,
writable: descriptor.writable,
value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
});
}
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
function _initializerWarningHelper(descriptor, context) {
throw new Error('Decorating class property failed. Please ensure that transform-class-properties is enabled.');
}
var Option = _select2['default'].Option;
var SearchInput = (_dec = (0, _mobxReact.inject)('MenuStore'), _dec(_class = (0, _mobxReact.observer)(_class = (_class2 = function (_Component) {
(0, _inherits3['default'])(SearchInput, _Component);
function SearchInput(props) {
(0, _classCallCheck3['default'])(this, SearchInput);
var _this = (0, _possibleConstructorReturn3['default'])(this, (SearchInput.__proto__ || Object.getPrototypeOf(SearchInput)).call(this, props));
_initDefineProp(_this, 'code', _descriptor, _this);
_this.handleChange = function (code) {
_this.setCode(code);
var onChange = _this.props.onChange;
onChange(code);
};
_this.setCode(null);
return _this;
}
(0, _createClass3['default'])(SearchInput, [{
key: 'setCode',
value: function setCode(code) {
this.code = code;
}
}, {
key: 'render',
value: function render() {
var MenuStore = this.props.MenuStore;
return _react2['default'].createElement(
'div',
{ className: 'search-input-wrap' },
_react2['default'].createElement(
_select2['default'],
{
style: { width: 265, borderRadius: 2 },
placeholder: '\u8F93\u5165\u529F\u80FD\u4EE3\u7801\u6216\u529F\u80FD\u540D\u79F0',
value: this.code
// optionFilterProp="children"
// filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
// filter
, onChange: this.handleChange,
clearButton: false,
searchable: true
},
MenuStore.treeNodeMenus.map(function (node) {
return _react2['default'].createElement(
Option,
{
key: node.functionCode,
value: node.functionCode
},
node.text
);
})
),
_react2['default'].createElement(_icon2['default'], { type: 'search' })
);
}
}]);
return SearchInput;
}(_react.Component), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, 'code', [_mobx.observable], {
enumerable: true,
initializer: null
}), _applyDecoratedDescriptor(_class2.prototype, 'setCode', [_mobx.action], Object.getOwnPropertyDescriptor(_class2.prototype, 'setCode'), _class2.prototype)), _class2)) || _class) || _class);
exports['default'] = SearchInput;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _dec, _class;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouterDom = require('react-router-dom');
var _mobxReact = require('mobx-react');
var _SearchInput = require('./SearchInput');
var _SearchInput2 = _interopRequireDefault(_SearchInput);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var SearchInputWrapper = (_dec = (0, _mobxReact.inject)('MenuStore'), (0, _reactRouterDom.withRouter)(_class = _dec(_class = function (_PureComponent) {
(0, _inherits3['default'])(SearchInputWrapper, _PureComponent);
function SearchInputWrapper() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3['default'])(this, SearchInputWrapper);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref = SearchInputWrapper.__proto__ || Object.getPrototypeOf(SearchInputWrapper)).call.apply(_ref, [this].concat(args))), _this), _this.handleChange = function (code) {
var _this$props = _this.props,
MenuStore = _this$props.MenuStore,
history = _this$props.history;
var treeNodeMenus = MenuStore.treeNodeMenus,
activeMenu = MenuStore.activeMenu;
var target = treeNodeMenus.find(function (node) {
return node.functionCode === code;
});
if (target && target.functionCode !== activeMenu.functionCode) {
var LINK_MAP = {
REACT: '/' + target.url,
HTML: '/iframe/' + target.functionCode
};
var desUrl = LINK_MAP[target.symbol] || '/';
history.push(desUrl);
}
}, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret);
}
(0, _createClass3['default'])(SearchInputWrapper, [{
key: 'render',
value: function render() {
return _react2['default'].createElement(_SearchInput2['default'], { onChange: this.handleChange });
}
}]);
return SearchInputWrapper;
}(_react.PureComponent)) || _class) || _class);
exports['default'] = SearchInputWrapper;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _popover = require('choerodon-ui/lib/popover');
var _popover2 = _interopRequireDefault(_popover);
var _button = require('choerodon-ui/lib/button');
var _button2 = _interopRequireDefault(_button);
var _avatar = require('choerodon-ui/lib/avatar');
var _avatar2 = _interopRequireDefault(_avatar);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _dec, _class;
require('choerodon-ui/lib/popover/style');
require('choerodon-ui/lib/button/style');
require('choerodon-ui/lib/avatar/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _mobxReact = require('mobx-react');
var _reactRouterDom = require('react-router-dom');
var _axios = require('../axios');
var _axios2 = _interopRequireDefault(_axios);
var _authorize = require('../../common/authorize');
var _avatar3 = require('./style/icons/avatar.png');
var _avatar4 = _interopRequireDefault(_avatar3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var UserPreferences = (_dec = (0, _mobxReact.inject)('MenuStore', 'HeaderStore', 'AppState'), (0, _reactRouterDom.withRouter)(_class = _dec(_class = (0, _mobxReact.observer)(_class = function (_Component) {
(0, _inherits3['default'])(UserPreferences, _Component);
function UserPreferences() {
(0, _classCallCheck3['default'])(this, UserPreferences);
return (0, _possibleConstructorReturn3['default'])(this, (UserPreferences.__proto__ || Object.getPrototypeOf(UserPreferences)).apply(this, arguments));
}
(0, _createClass3['default'])(UserPreferences, [{
key: 'preferences',
value: function preferences() {
// this.props.history.push('/iframe/MY_PROFILE');
this.props.history.push('/hap-core/sys/preferences');
}
}, {
key: 'handleClickMsg',
value: function handleClickMsg() {
this.props.history.push('/iframe/SYS_PREFERENCE');
}
}, {
key: 'handleLogout',
value: function handleLogout() {
var AppState = this.props.AppState;
if (AppState.isCas) {
(0, _authorize.logout)();
} else {
_axios2['default'].post('/logout').then(function () {
(0, _authorize.authorize)();
});
}
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
AppState = _props.AppState,
HeaderStore = _props.HeaderStore;
var _ref = AppState.getUserInfo || {},
imageUrl = _ref.imageUrl,
userName = _ref.userName,
email = _ref.email;
var picUrl = imageUrl || _avatar4['default'];
var AppBarIconRight = _react2['default'].createElement(
'div',
{ className: 'user-preference-popover-content' },
_react2['default'].createElement(
_avatar2['default'],
{ src: picUrl, className: 'user-preference-avatar' },
userName && userName.charAt(0)
),
_react2['default'].createElement(
'div',
{ className: 'popover-title' },
userName
),
_react2['default'].createElement(
'div',
{ className: 'popover-text' },
email
),
_react2['default'].createElement(
'div',
{ className: 'popover-msg-wrapper' },
_react2['default'].createElement(
'div',
{
className: 'popover-text',
role: 'none',
onClick: this.handleClickMsg.bind(this)
},
'用户信息'
),
_react2['default'].createElement(
'div',
{
className: 'popover-text',
role: 'none',
onClick: this.handleClickMsg.bind(this)
},
'用户密码'
)
),
_react2['default'].createElement(
'div',
{ className: 'popover-button-wrapper' },
_react2['default'].createElement(
_button2['default'],
{
funcType: 'raised',
type: 'primary',
onClick: this.preferences.bind(this)
},
'首选项'
),
_react2['default'].createElement(
_button2['default'],
{
funcType: 'raised',
onClick: this.handleLogout.bind(this)
},
'退出登录'
)
)
);
return _react2['default'].createElement(
_popover2['default'],
{
overlayClassName: 'user-preference-popover',
content: AppBarIconRight,
trigger: 'click',
placement: 'bottomRight'
},
_react2['default'].createElement(
'div',
{ className: 'user-preference' },
_react2['default'].createElement(
_avatar2['default'],
{ src: picUrl },
userName && userName.charAt(0)
),
_react2['default'].createElement(
'div',
{ className: 'user-preference-name' },
userName
)
)
);
}
}]);
return UserPreferences;
}(_react.Component)) || _class) || _class) || _class);
exports['default'] = UserPreferences;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Header = require('./Header');
var _Header2 = _interopRequireDefault(_Header);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Header2['default'];
\ No newline at end of file
.master-head {
&-wrap {
display: flex;
align-items: center;
height: 48px;
font-size: 14px;
color: #fff;
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.16);
position: relative;
z-index: 999;
background-color: #fff;
}
&-left,
&-center,
&-right {
display: flex;
margin: auto;
}
&-left {
padding-left: 28px;
}
&-center {
padding-left: 0;
flex-grow: 1;
justify-content: flex-end;
margin-right: 32px;
height: 48px;
}
&-right {
padding-right: 68px;
}
}
'use strict';
require('./index.scss');
\ No newline at end of file
@import "./header";
@import "./logo";
@import "./userPreference";
@import "./searchInput";
@import "./nav";
.header-logo {
&-wrap {
height: 40px;
line-height: 40px;
display: flex;
align-items: center;
}
&-icon {
color: white;
font-size: 30px;
width: 120px;
height: 100%;
background-repeat: no-repeat;
background-size: auto 35px;
background-position: center;
}
&-title {
margin-left: 20px;
font-size: 18px;
line-height: 23px;
}
}
.nav-wrapper {
width: 150px;
background: #fff;
list-style: none;
padding: 0;
margin: 0;
border-radius: 2px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
li {
margin: 0;
clear: both;
font-size: 13px;
font-weight: normal;
color: #000;
white-space: nowrap;
cursor: pointer;
-webkit-transition: all .3s;
transition: all .3s;
line-height: 22px;
.li-wrapper {
padding: 5px 12px;
display: flex;
align-items: center;
justify-content: space-between;
.icon-close:hover {
color: red;
}
}
}
li:hover {
background: #eee;
}
}
.header-nav-action {
margin-left: 33px;
font-size: 14px;
margin-top: 13px;
// line-height: 47px;
}
.search-input-wrap {
display: flex;
position: relative;
border-right: 1px solid #d2dcdd;
border-left: 1px solid #d2dcdd;
//border-radius: 5px;
.icon {
font-size: 20px;
line-height: .48rem;
position: absolute;
right: 10px;
color: #555;
}
.c7n-hap-select-wrapper {
background-color: rgba(255, 255, 255, 0.12);
height: .48rem;
.c7n-hap-select {
border: none;
// padding-left: 35px;
// padding-top: 5px;
// padding-bottom: 5px;
height: .48rem;
color: #000;
}
.c7n-hap-select-inner-button .c7n-hap-select-clear-button {
display: none !important;
}
.c7n-hap-select-suffix {
display: none !important;
}
.c7n-hap-select:focus, .c7n-hap-select-focus .c7n-hap-select {
color: #000 !important;
}
}
}
.user-preference {
display: flex;
align-items: center;
&-popover {
z-index: 1500 !important;
position: absolute !important;
width: 214px;
top: 40px !important;
right: 25px;
left: auto !important;
&-content {
text-align: center;
.user-preference-avatar {
width: 72px;
height: 72px;
line-height: 72px;
font-size: 40px;
}
.popover-title {
font-weight: bold;
font-size: 14px;
line-height: 20px;
color: rgba(0, 0, 0, 0.87);
margin: 6px 0 4px;
}
.popover-text {
font-size: 14px;
line-height: 20px;
color: rgba(0, 0, 0, 0.65);
}
.popover-msg-wrapper {
margin: 0 -16px;
border-top: 1px solid rgba(0, 0, 0, 0.16);
border-bottom: 1px solid rgba(0, 0, 0, 0.16);
padding: 12px 24px;
margin-top: 12px;
text-align: left;
.popover-text {
font-size: 13px;
line-height: 32px;
color: #000;
cursor: pointer;
}
}
.popover-button-wrapper {
margin-top: 20px;
button {
width: 80px;
height: 32px;
& + button {
margin-left: 14px;
}
}
}
}
}
&-avatar {
display: inline-block;
width: 30px;
height: 30px;
line-height: 30px;
border-radius: 50%;
font-size: 18px;
font-weight: bold;
background-color: #c5cbe8;
background-position: center;
background-size: 100%;
background-repeat: no-repeat;
color: #3f51b5;
text-transform: uppercase;
text-align: center;
cursor: pointer;
}
&-name {
margin-left: 8px;
font-size: 13px;
line-height: 18px;
color: #444;
}
}
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _modal = require('choerodon-hap-ui/lib/modal');
var _modal2 = _interopRequireDefault(_modal);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
require('choerodon-hap-ui/lib/modal/style');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _common = require('../../common');
require('./style');
var _backage2x = require('./style/backage@2x.png');
var _backage2x2 = _interopRequireDefault(_backage2x);
var _data2x = require('./style/data@2x.png');
var _data2x2 = _interopRequireDefault(_data2x);
var _call2x = require('./style/call@2x.png');
var _call2x2 = _interopRequireDefault(_call2x);
var _pay2x = require('./style/pay@2x.png');
var _pay2x2 = _interopRequireDefault(_pay2x);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Home = function (_Component) {
(0, _inherits3['default'])(Home, _Component);
function Home(props) {
(0, _classCallCheck3['default'])(this, Home);
var _this = (0, _possibleConstructorReturn3['default'])(this, (Home.__proto__ || Object.getPrototypeOf(Home)).call(this, props));
_this.onChangeSearch = function (event) {
_this.setState({
keyword: event.target.value
});
};
_this.searchList = function (type) {
var pathName = '';
if (_this.state.keyword) {
if (type === 'qixin') {
pathName = '#/hap-core/qixin';
} else if (type === 'fenbao') {
pathName = '#/hap-core/risk-search';
} else if (type === 'dianhua') {
pathName = '#/hap-core/dian-hua';
} else {
_modal2['default'].warning('敬请期待');
return;
}
/* this.props.history.push({
pathname: pathName,
}); */
window.open(pathName, '_blank');
window.localStorage.setItem('keyword', _this.state.keyword);
} else {
_modal2['default'].warning('请先输入关键字');
}
};
_this.showFunction = function () {
if (_this.state.keyword) {
_this.setState({
showFlag: true
});
} else {
_modal2['default'].warning('请先输入关键字');
_this.setState({
showFlag: false
});
}
};
_this.state = {
keyword: '',
showFlag: false
};
return _this;
}
(0, _createClass3['default'])(Home, [{
key: 'componentDidMount',
value: function componentDidMount() {
var pathName = '';
var keyword = (0, _common.getCookie)('keyword');
var type = (0, _common.getCookie)('type');
if (keyword && type) {
if (type === 'qixin') {
pathName = '#/hap-core/qixin';
} else if (type === 'fenbao') {
pathName = '#/hap-core/risk-search';
} else if (type === 'dianhua') {
pathName = '#/hap-core/dian-hua';
}
if (type !== 'pay') {
/* this.props.history.push({
pathname: pathName,
}); */
window.open(pathName, '_blank');
}
window.localStorage.setItem('keyword', keyword);
window.localStorage.setItem('type', type);
(0, _common.removeCookie)('keyword');
(0, _common.removeCookie)('type');
}
}
}, {
key: 'functionComponent',
value: function functionComponent() {
var _this2 = this;
return _react2['default'].createElement(
'div',
{ className: 'function', id: 'function' },
_react2['default'].createElement(
'div',
{ className: 'list' },
_react2['default'].createElement('img', { src: _data2x2['default'], alt: '' }),
_react2['default'].createElement(
'div',
{ className: 'item', onClick: function onClick() {
return _this2.searchList('qixin');
} },
'\u4F01\u4FE1\u5B9D'
),
_react2['default'].createElement(
'div',
{ className: 'item', onClick: function onClick() {
return _this2.searchList('fenbao');
} },
'\u98CE\u62A5'
)
),
_react2['default'].createElement(
'div',
{ className: 'list' },
_react2['default'].createElement('img', { src: _call2x2['default'], alt: '' }),
_react2['default'].createElement(
'div',
{ className: 'item', onClick: function onClick() {
return _this2.searchList('dianhua');
} },
'\u7535\u8BDD\u90A6'
)
),
_react2['default'].createElement(
'div',
{ className: 'list' },
_react2['default'].createElement('img', { src: _pay2x2['default'], alt: '' }),
_react2['default'].createElement(
'div',
{ className: 'item', onClick: function onClick() {
return _this2.searchList('pay');
} },
'\u94F6\u8054'
)
)
);
}
}, {
key: 'render',
value: function render() {
var _this3 = this;
return _react2['default'].createElement(
'div',
{ className: 'choerodon-home' },
_react2['default'].createElement(
'div',
{ className: 'choerodon-home-content' },
_react2['default'].createElement('img', { src: _backage2x2['default'], alt: '' })
),
_react2['default'].createElement(
'div',
{ className: 'search-box' },
_react2['default'].createElement(
'div',
{ className: 'search' },
_react2['default'].createElement('input', { placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u5B57', onChange: this.onChangeSearch, name: 'searchKey', value: this.state.keyword }),
_react2['default'].createElement(
'div',
{ className: 'search-button', onClick: function onClick() {
return _this3.showFunction();
} },
'\u641C\u7D22'
)
)
),
this.state.showFlag ? this.functionComponent() : null
);
}
}]);
return Home;
}(_react.Component);
exports['default'] = Home;
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Home = require('./Home');
var _Home2 = _interopRequireDefault(_Home);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _Home2['default'];
\ No newline at end of file
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = [{
key: 0,
title: 'HAP4.0开发手册',
link: 'http://wiki.choerodon.com.cn/share/5ebc04885b7fdaaa',
items: [{
key: 1,
icon: 'svg1',
title: '更新简介',
content: [{
key: 4,
title: '4.0更新汇总',
link: 'http://wiki.choerodon.com.cn/share/506ee1d49b28b2f5'
}, {
key: 5,
title: '4.0 vs 3.0',
link: 'http://wiki.choerodon.com.cn/share/36467cf3480654ea'
}, {
key: 6,
title: '4.0技术栈详解',
link: 'http://wiki.choerodon.com.cn/share/a6c904fc5cbe5531'
}],
link: 'http://wiki.choerodon.com.cn/share/fab515e9780c7708'
}, {
key: 2,
icon: 'svg2',
title: '开发文档',
content: [{
key: 7,
title: '开发环境搭建',
link: 'http://wiki.choerodon.com.cn/share/4d7cfcb0d26614ba'
}, {
key: 8,
title: '新建数据库',
link: 'http://wiki.choerodon.com.cn/share/dd05d3af09a6c59f'
}, {
key: 9,
title: '新建项目',
link: 'http://wiki.choerodon.com.cn/share/bd5b2738be1230e6'
}],
link: 'http://wiki.choerodon.com.cn/share/372ba830b8ed5e98'
}, {
key: 3,
icon: 'svg3',
title: '升级文档',
content: [{
key: 10,
title: '4.0升级手册',
link: 'http://wiki.choerodon.com.cn/share/167d47f9d1cd269d'
}],
link: 'http://wiki.choerodon.com.cn/share/ce22fe8917466995'
}]
}];
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="104px" height="76px" viewBox="0 0 104 76" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>choerodon_logo_fixed (1)</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-501.000000, -996.000000)" id="choerodon_logo_fixed-(1)">
<g transform="translate(502.000000, 996.000000)">
<path d="M72.713,64.599 C76.157,65.378 85.433,58.826 86.396,59.692 C87.047,60.278 83.748,64.587 83.748,64.587 L80.666,67.286 C80.666,67.286 71.682,64.366 72.713,64.599 Z M87.53,30.78 C90.696,32.343 93.204,40.919 94.497,40.852 C95.372,40.807 95.522,35.382 95.522,35.382 L94.826,31.345 C94.826,31.345 86.582,30.312 87.529,30.78 L87.53,30.78 Z" id="Shape" stroke="#000000" stroke-width="0.9377" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M59.68,4.5 L44.77,0.985 C44.77,0.985 24.805,8.274 13.029,19.901 C21.201,21.568 23.582,21.126 23.582,21.126 L59.68,4.5 Z" id="Shape" stroke="#000000" stroke-width="1.5628" fill="#FF5F2E" fill-rule="nonzero" stroke-linejoin="round"></path>
<path d="M0.742,40.568 C0.742,40.568 33.292,5.082 59.68,4.5 C86.068,3.918 93.984,29.426 96.036,34.704 C86.1,37.414 76.244,38.43 64.771,35.192 C63.251,52.466 72.053,63.645 86.111,64.165 C73.085,74.069 65.244,75.555 55.575,74.872 C39.773,73.757 15.115,60.8 3.973,27.667 C2.09107795,31.7247493 0.994755942,36.1022331 0.742,40.568 Z" id="Shape" fill="#5CC2F2" fill-rule="nonzero"></path>
<path d="M50.1,62.516 C30.668,60.381 18.453,49.395 6.626,34.634 C18.676,62.634 40.922,73.839 55.566,74.872 C65.235,75.554 73.076,74.069 86.101,64.165 C80.9765759,64.092112 76.0460401,62.1944975 72.195,58.813 C68.675,60.768 63.309,63.968 50.1,62.516 Z" id="Shape" fill="#B2E7FB" fill-rule="nonzero" opacity="0.9"></path>
<path d="M0.742,40.568 C0.742,40.568 33.292,5.082 59.68,4.5 C86.068,3.918 94.72,28.726 96.037,34.704 C87.017,37.35 77.616,38.87 64.772,35.192 C63.252,52.466 72.054,63.645 86.112,64.165 C73.086,74.069 65.245,75.555 55.576,74.872 C39.773,73.757 15.115,60.8 3.973,27.667 C2.09107795,31.7247493 0.994755942,36.1022331 0.742,40.568 Z" id="Shape" stroke="#000000" stroke-width="1.5628" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M56.517,39.739 L39.043,31.424 C34.3472052,36.7746688 31.2920753,43.3647227 30.243,50.406 C42.563,48.27 56.517,39.74 56.517,39.74 L56.517,39.739 Z" id="Shape" stroke="#000000" stroke-width="1.5628" fill="#FF5F2E" fill-rule="nonzero" stroke-linejoin="round"></path>
<circle id="Oval" stroke="#000000" stroke-width="1.563" fill="#FFFFFF" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="73.676" cy="25.43" r="5.529"></circle>
<ellipse id="Oval" fill="#000000" fill-rule="nonzero" cx="74.361" cy="25.43" rx="2.839" ry="2.719"></ellipse>
<path d="M37.28,34.819 C37.28,34.819 41.19,37.891 44.963,38.43 M33.659,39.564 C36.3836638,40.3507018 39.167864,40.9142306 41.984,41.249 M31.54,45.145 C34.6458096,45.1844213 37.7450818,44.8500182 40.771,44.149" id="Shape" stroke="#000000" stroke-width="1.5628" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M89.03,43.944 C93.4364467,43.1754825 97.9674742,44.1950537 101.62,46.777 C101.683879,46.4388984 101.711701,46.094973 101.703,45.751 C101.553,39.639 93.358,38.254 88.23,38.839 C83.102,39.424 77.433,42.711 76.856,49.296 C76.7819185,50.2814119 76.9210777,51.2712158 77.264,52.198 C79.7543101,47.8260032 84.0704854,44.7978934 89.029,43.944 L89.03,43.944 Z" id="Shape" stroke="#231815" stroke-width="0.938" fill="#FFC7C7" fill-rule="nonzero" stroke-linejoin="round"></path>
<path d="M90.081,50.021 C92.8541283,49.5373344 95.705987,50.1704018 98.014,51.782 C99.474,50.072 101.225,48.87 101.62,46.777 C97.7372978,44.0394704 92.8798429,43.0670563 88.2425367,44.098965 C83.6052304,45.1308737 79.6184803,48.0713295 77.263,52.197 C78.1795495,54.438001 79.6526677,56.4081245 81.543,57.921 C82.5824885,53.8346136 85.9263377,50.7406327 90.081,50.021 Z" id="Shape" stroke="#231815" stroke-width="0.938" fill="#FFE2E2" fill-rule="nonzero" stroke-linejoin="round"></path>
<path d="M81.543,57.921 C86.093,61.823 92.554,64.021 94.36,61.599 C96.555,58.655 95.33,56.083 96.958,53.254 C97.263714,52.7317278 97.6172293,52.2389489 98.014,51.782 C95.1355366,49.7775677 91.4569409,49.3126133 88.1702705,50.5378065 C84.8836001,51.7629996 82.4069932,54.5224682 81.543,57.922 L81.543,57.921 Z" id="Shape" stroke="#231815" stroke-width="0.938" fill="#F6F6F6" fill-rule="nonzero" stroke-linejoin="round"></path>
<path d="M88.23,38.983 C83.103,39.568 77.433,42.855 76.856,49.439 C76.7815678,50.4243407 76.9203866,51.4141491 77.263,52.341 C78.1795882,54.5819791 79.6526997,56.5520936 81.543,58.065 C86.093,61.966 92.553,64.165 94.36,61.742 C96.555,58.798 95.33,56.226 96.958,53.398 C97.263685,52.875709 97.6172021,52.3829274 98.014,51.926 C99.474,50.216 101.224,49.014 101.62,46.921 C101.683599,46.582533 101.711087,46.2382705 101.702,45.894 C101.554,39.782 93.358,38.398 88.23,38.983 Z" id="Shape" stroke="#000000" stroke-width="1.5628" stroke-linecap="round" stroke-linejoin="round"></path>
<circle id="Oval" fill="#FFFFFF" fill-rule="nonzero" cx="75.156" cy="24.421" r="1.009"></circle>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="40px" height="37px" viewBox="0 0 40 37" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>gitlab</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-220.000000, -1182.000000)" fill-rule="nonzero" id="安装与配置">
<g transform="translate(200.000000, 1132.000000)">
<g id="Group" transform="translate(0.000000, 32.000000)">
<g id="gitlab" transform="translate(20.000000, 18.000000)">
<polygon id="Shape" fill="#E24329" points="19.9890027 36.7795148 27.3219407 14.2111051 12.6566038 14.2111051 19.9892183 36.7795148"></polygon>
<polygon id="Shape" fill="#FC6D26" points="19.9890027 36.7795148 12.6560647 14.2111051 2.37897574 14.2111051 19.9892183 36.7792992"></polygon>
<path d="M2.37908356,14.2111051 L0.150512129,21.0693261 C-0.0526145553,21.6949865 0.169919137,22.3803774 0.702210243,22.7667925 L19.9890027,36.7795148 L2.37908356,14.2109973 L2.37908356,14.2111051 Z" id="Shape" fill="#FCA326"></path>
<path d="M2.37908356,14.2111051 L12.6561725,14.2111051 L8.2393531,0.618328841 C8.01218329,-0.0810781671 7.02274933,-0.0810781671 6.79568733,0.618328841 L2.37897574,14.2111051 L2.37908356,14.2111051 Z" id="Shape" fill="#E24329"></path>
<polygon id="Shape" fill="#FC6D26" points="19.9890027 36.7795148 27.3219407 14.2111051 37.5990296 14.2111051 19.9892183 36.7792992"></polygon>
<path d="M37.5989218,14.2111051 L39.8274933,21.0693261 C40.0306199,21.6949865 39.8080863,22.3803774 39.2757951,22.7667925 L19.9890027,36.7795148 L37.5989218,14.2109973 L37.5989218,14.2111051 Z" id="Shape" fill="#FCA326"></path>
<path d="M37.5989218,14.2111051 L27.3218329,14.2111051 L31.7386523,0.618328841 C31.9659299,-0.0810781671 32.9553639,-0.0810781671 33.1825337,0.618328841 L37.5990296,14.2111051 L37.5989218,14.2111051 Z" id="Shape" fill="#E24329"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="41px" height="35px" viewBox="0 0 41 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>Bitmap</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-484.000000, -1183.000000)" id="安装与配置">
<g transform="translate(200.000000, 1132.000000)">
<g id="Group" transform="translate(264.666667, 32.000000)">
<image id="Bitmap" x="20" y="19" width="40" height="34.8717949" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAiCAYAAADcbsCGAAAMGGlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUU0kXnldSCAktEAEpoTdBepUaqiAgHWyEJEAoIQSCir0sKrh2EcGKroAouBZAFhURxcIiYK+LBRVlXSzYUPknCaDr/uX895x573t37r3z3Tsz78wAoGjPFgozUCUAMgW5oogAH2ZcfAKT9BAgAAVyQAmosDk5Qu/w8BAAZfT9d3l3HVpDuWIpifXP/v8qylxeDgcAJBziJG4OJxPiowDgmhyhKBcAQifUG8zOFUrwW4hVRZAgAESyBKfIsJYEJ8mwtdQmKoIFsS8AZCqbLUoBQEESn5nHSYFxFIQQWwu4fAHEuyD24KSyuRD3QDwhMzMLYkUqxKZJ38VJ+VvMpLGYbHbKGJblIhWyLz9HmMGe+3+W439LZoZ4dAx92KiposAISc6wbpXpWcESDLkjTYKk0DCIVSA+z+dK7SX4dqo4MHrEvp+Tw4I1AwwAJ5vL9g2GGNYSZYjTo71HsC1bJPWF9mgoPzcoagQnibIiRuKjeYKM0JCROCtTeUGjeAcvxy9y1CaZ7x8EMVxp6NH81KhYGU+0NY8fEwqxAsSdOemRwSO+9/NTWaGjNiJxhISzIcRvk0X+ETIbTD0zZzQvzIrDlo6lDrFXbmpUoMwXi+PlxIWMcuDyfP1kHDAuTxA9wg2Dq8snYsS3QJgRPmKP7eBlBETI6owdysmLHPXtzoULTFYH7GEae3K4jD/2TpgbHiXjhuMgBLCAL2ACMWxJIAukAX5Hf30//JL1+AM2EIEUwAOWI5pRj1hpjwA+I0E++BMiHsgZ8/OR9vJAHtR/GdPKnpYgWdqbJ/VIB08gzsQ1cQ/cDQ+BTy/YbHFn3GXUj6k4OirRj+hLDCT6E83GeHAg6wzYRID/b3TB8M2D2Um4CEZz+BaP8ITQRXhIuEboIdwCMeCxNMqI1Sz+UtEPzJlgCuiB0fxHskuCMftGbXBjyNoB98HdIX/IHWfgmsASt4eZeOOeMDcHqP2eoXiM27da/jiehPX3+YzoFcwVHEZYJI3NDGvM6scorO9qxIXv4B8tsZXYEawNO41dwJqwesDETmENWDt2QoLHVsJj6UoYHS1Cyi0dxuGP2lhXW/dZf/7H6OwRBiLpfINc3pxcyYZgZQnnivgpqblMb/hH5jGDBByrCUxbaxtnACT/d9nv4w1D+t9GGBe/6bKbAXAphMqUbzq2AQDHnwBAf/dNZ/Aabq91AJzo5IhFeTIdLnkQAAUowp2hAXSAATCFOdkCR+AGvIAfmAzCQBSIBzNh1VNBJmQ9G8wHS0ABKALrwGZQCnaCPaASHASHQT1oAqfBOXAJdIJr4A5cG73gBRgA78AQgiAkhIbQEQ1EFzFCLBBbxBnxQPyQECQCiUcSkRREgIiR+cgypAjZgJQiu5Eq5FfkOHIauYB0IbeQB0gf8hr5hGIoFVVFtVFjdCLqjHqjwWgUOgNNQbPRfHQ5ugYtQcvRA2gdehq9hF5De9AX6CAGMHmMgelhlpgzxsLCsAQsGRNhC7FCrBgrx2qwRjjXV7AerB/7iBNxOs7ELeH6DMSjcQ6ejS/EV+OleCVeh7fiV/AH+AD+lUAjaBEsCK6EIEIcIYUwm1BAKCbsIxwjnIV7p5fwjkgkMogmRCe4N+OJacR5xNXE7cRaYjOxi/iIOEgikTRIFiR3UhiJTcolFZC2kg6QTpG6Sb2kD2R5si7ZluxPTiALyEvJxeT95JPkbvJT8pCckpyRnKtcmBxXbq7cWrm9co1yl+V65YYoyhQTijslipJGWUIpodRQzlLuUt7Iy8vry7vIT5Xnyy+WL5E/JH9e/oH8R6oK1ZzKok6niqlrqBXUZuot6hsajWZM86Il0HJpa2hVtDO0+7QPCnQFK4UgBa7CIoUyhTqFboWXinKKRoreijMV8xWLFY8oXlbsV5JTMlZiKbGVFiqVKR1XuqE0qExXtlEOU85UXq28X/mC8jMVkoqxip8KV2W5yh6VMyqP6BjdgM6ic+jL6HvpZ+m9qkRVE9Ug1TTVItWDqh2qA2oqavZqMWpz1MrUTqj1MDCGMSOIkcFYyzjMuM74NE57nPc43rhV42rGdY97rz5e3Uudp16oXqt+Tf2TBlPDTyNdY71GvcY9TVzTXHOq5mzNHZpnNfvHq453G88ZXzj+8PjbWqiWuVaE1jytPVrtWoPaOtoB2kLtrdpntPt1GDpeOmk6m3RO6vTp0nU9dPm6m3RP6T5nqjG9mRnMEmYrc0BPSy9QT6y3W69Db0jfRD9af6l+rf49A4qBs0GywSaDFoMBQ13DKYbzDasNbxvJGTkbpRptMWozem9sYhxrvMK43viZibpJkEm+SbXJXVOaqadptmm56VUzopmzWbrZdrNOc9TcwTzVvMz8sgVq4WjBt9hu0TWBMMFlgmBC+YQbllRLb8s8y2rLB1YMqxCrpVb1Vi8nGk5MmLh+YtvEr9YO1hnWe63v2KjYTLZZatNo89rW3JZjW2Z71Y5m52+3yK7B7pW9hT3Pfof9TQe6wxSHFQ4tDl8cnRxFjjWOfU6GTolO25xuOKs6hzuvdj7vQnDxcVnk0uTy0dXRNdf1sOtfbpZu6W773Z5NMpnEm7R30iN3fXe2+273Hg+mR6LHLo8eTz1Ptme550MvAy+u1z6vp95m3mneB7xf+lj7iHyO+bxnubIWsJp9Md8A30LfDj8Vv2i/Ur/7/vr+Kf7V/gMBDgHzApoDCYHBgesDbwRpB3GCqoIGJjtNXjC5NZgaHBlcGvwwxDxEFNI4BZ0yecrGKXdDjUIFofVhICwobGPYvXCT8Ozw36YSp4ZPLZv6JMImYn5EWyQ9clbk/sh3UT5Ra6PuRJtGi6NbYhRjpsdUxbyP9Y3dENsTNzFuQdyleM14fnxDAikhJmFfwuA0v2mbp/VOd5heMP36DJMZc2ZcmKk5M2PmiVmKs9izjiQSEmMT9yd+Zoexy9mDSUFJ25IGOCzOFs4Lrhd3E7eP587bwHua7J68IflZinvKxpS+VM/U4tR+Potfyn+VFpi2M+19elh6RfpwRmxGbSY5MzHzuEBFkC5ozdLJmpPVJbQQFgh7sl2zN2cPiIJF+3KQnBk5Dbmq8KjTLjYV/yR+kOeRV5b3YXbM7CNzlOcI5rTPNZ+7au7TfP/8X+bh8zjzWubrzV8y/8EC7wW7FyILkxa2LDJYtHxR7+KAxZVLKEvSl/y+1HrphqVvl8Uua1yuvXzx8kc/BfxUXaBQICq4scJtxc6V+Er+yo5Vdqu2rvpayC28WGRdVFz0eTVn9cWfbX4u+Xl4TfKajrWOa3esI64TrLu+3nN95QblDfkbHm2csrFuE3NT4aa3m2dtvlBsX7xzC2WLeEtPSUhJw1bDreu2fi5NLb1W5lNWu01r26pt77dzt3fv8NpRs1N7Z9HOT7v4u27uDthdV25cXryHuCdvz5O9MXvbfnH+pWqf5r6ifV8qBBU9lRGVrVVOVVX7tfavrUarxdV9B6Yf6Dzoe7ChxrJmdy2jtugQOCQ+9PzXxF+vHw4+3HLE+UjNUaOj247RjxXWIXVz6wbqU+t7GuIbuo5PPt7S6NZ47Der3yqa9JrKTqidWHuScnL5yeFT+acGm4XN/adTTj9qmdVy50zcmautU1s7zgafPX/O/9yZNu+2U+fdzzddcL1w/KLzxfpLjpfq2h3aj/3u8PuxDseOustOlxs6XTobuyZ1nez27D59xffKuatBVy9dC73WdT36+s0b02/03OTefHYr49ar23m3h+4svku4W3hP6V7xfa375X+Y/VHb49hz4oHvg/aHkQ/vPOI8evE45/Hn3uVPaE+Kn+o+rXpm+6ypz7+v8/m0570vhC+G+gv+VP5z20vTl0f/8vqrfSBuoPeV6NXw69VvNN5UvLV/2zIYPnj/Xea7ofeFHzQ+VH50/tj2KfbT06HZn0mfS76YfWn8Gvz17nDm8LCQLWJLjwIYbGhyMgCvKwCgxcOzA7zHURRk9y+pILI7oxSB/4RldzSpOAJQ4QVA9GIAQuAZZQdsRhBT4Vty/I7yAqid3VgbkZxkO1tZLCq8xRA+DA+/0QaA1AjAF9Hw8ND24eEveyHZWwA0Z8vufRIhwjP+LjMJ6mingB/lX8ZpbEB6NXv2AAAGNUlEQVRYCa1YTWhcVRQ+9735SzqpLyT9IanwtCIddTEg1YCIo2IR3AzUjUho6saV1O7ciBQ37mo24kLMhKCCWJyCIhSEiC4EFwaxNu2ifWBb2pra16RN5vc9z3cnZ3LnZd5Mmnjgzru/537nOz/vJYr+B7mSd51KnYpWSC+EIbmhop/Iovncn978TtSrnRy+mHOLDOQY6yjG6PFColkKqJRb9LyYPbHTDwzuwiHXVTadoFADcqE5+/IRfcG9H8/ppzW0mzKHnqDV337V4/WfMhtyNnfeK5mTvfpbAiduUwGzpKgQVZgcP0CPnvuZgpVlqiz+RYOHJ+jO3Od066MPo1sx9llHKWzSdD82e4K79KSb5xg6wa6B25zoTWDooeLr3I5SmpkyBazdmZshYdNca/dDmg8tms0kqfzIgue359c7m8CBpWqVptg6xFI+esAcg7Hk2AENzN69m7IvvaL79WtXqcoMVi9eIPTvlr/Rx5ps6f1mkzKWRSluhvgMpKwUTT9+3luQ+Ta4C0+5BYvdxixNySKeYGbg8LMEIKbg8rvlMxqEzIM998z3dPnI8xqUzFeCgG7X67TSaJBfr5F3/x49PDBIj+3aRfvSGdkmzwWO59l0mkoKrgtC+pZXXFmVJy6KukvW5Im4QnyJIN7gUrC0wizdrtUI4ERWGnW6xLEpkk0kKJcdohyHSETK1lozKPKkG1nQwyhb3feMd0xLhgJOhcHVGWScANjBXVnNorkHhl1fqzr2cym7UA+CwqBtk81ON2Xlh+/00GKOE6N7zCXNzu1Ppunfzz7tmJcBdOHy0VSqHV81ZhANdz3tODQxPEL72a0SfwB1o1qjy6urtFxveAkoW2Lq0aBoJJWkIVYKQTDHlAO9jh9JisFnJsgaGtJhgBrXXF4m7+hrurw4rA9NWExGSADg65Uq3eG4BECRFor1kYCEZfvSKXKSyU1sysHhybdo73vvy3DT89o7b2tg5kIUlM9gbjJTSJRuYh/NpvOk1KvmIiz06w36h9lscH/AtjaBrPzxOy2fPcMAVnQ5QSkRQYL4X38pw44nmIHeK6tr+gnWuoinrPC4DrJfDo7NcKpPxVmAw3D1KLt8hF3fTfAKG548TjZnHdwZlTjXmfvSXPvGMmnc4fOr7qRazLnvcsE9jU2rnF23mGa4N06gAAABVAI5bi/mYTBcBxfGCcIHYSSxjn3ssfnElbWKM55pZRRizR0c4NTOaIAAWo3QjvH1SkW3aAKZl6O+ARQM7ibIZpwHKNNIuB3nblUrlABLqNrDjB6UYiMO7uPygQaLl2r1rpabCQTrIVCOM1GjBKC4LppscDvuucnvTp2xnLQ6WzGQi0CtZCoUQgnapsNyGz/BThxDsg16YbzpOqz1CqWOUoLNiBE0iS0ABZNgFMrR4DJY2SuBoAsC14lHWjOt3746LLWgvhh38mGgTnNSFMzDZj8utuKs3giLlmGiS+IJwHq5ncPJ25NMvajWP7VnmAWnX1bFFeeNOAv51WRp1wGgSJwRso4n3N1RqvhbL7FUr+W5NDhYRENsASRiUAemoQGXoHjaqtKRaQDSrf7B7Xgt9XJ/N6/gnqurnK2X+QfxI0mA2EIpQYsrBy33VHVmIVlw1gz0fvEkbo/WShjR9p5kKybRkAR7+SJYI2yAkV5uQdnoVWAN4vXXCAyJshxHQke2Ikj/XkOBreq6B6CIs60UZxNEtN/Ndf2SgyPFZ3ABf7MrnxU6ohQHzbongSru6FecoQd7AQpMmW+AXl6Q+xlPqZYKTuqU+mq/4zZti/8WDad4Qxvkxub4y+SFjrAA82BZ4hAARfrFYWufKtlBcOqNG76H8cZpHsy4jpPifyuEofqAhy63riKXm0nQbWM/162f4f8KqNlGKvj4uOfDg23pANee5c7cAaegAusYkWbTXGr3496TAqr9nmyfMDpcx/ibbfbNa37JmO3oxoKTXXB5w7KmFIUMtDubcJ8kDmIKLo4XVQqtYHbyqj8fv6e10hecqWBuzCmqUJ3gYCiY81vo++y66UQQlCSetnCGr9mGbCWB1tV6SoWnermu1/XbAicKeyTQAoOa3i4o0b8jcKIET3zdBIr/AmyQ9yCuM3VE+/8BdWx3PVS842AAAAAASUVORK5CYII="></image>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="45px" height="36px" viewBox="0 0 45 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>Group 8</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-484.000000, -378.000000)" fill-rule="nonzero" id="快速入门">
<g transform="translate(200.000000, 328.000000)">
<g id="Group" transform="translate(264.666667, 32.000000)">
<g id="Group-8" transform="translate(20.000000, 18.000000)">
<g id="browser">
<path d="M37.8679365,35.4730159 L2.13206349,35.4730159 C0.968095238,35.4730159 0.0244444444,34.5295238 0.0244444444,33.3653968 L0.0244444444,2.26396825 C0.0244444444,1.1 0.967936508,0.156349206 2.13206349,0.156349206 L37.8674603,0.156349206 C39.0314286,0.156349206 39.9750794,1.09984127 39.9750794,2.26396825 L39.9750794,33.3650794 C39.9753968,34.5292063 39.0315873,35.4730159 37.8679365,35.4730159 Z" id="Shape" fill="#4B87EA"></path>
<path d="M39.9753968,5.61031746 L0.0246031746,5.61031746 L0.0246031746,2.26396825 C0.0246031746,1.1 0.968095238,0.156349206 2.13222222,0.156349206 L37.867619,0.156349206 C39.0315873,0.156349206 39.9752381,1.09984127 39.9752381,2.26396825 L39.9753968,5.61031746 Z" id="Shape" fill="#A9A9A9"></path>
<path d="M0.0246031746,20.6642857 L0.0246031746,33.3650794 C0.0246031746,34.5290476 0.968095238,35.4726984 2.13222222,35.4726984 L19.9333333,35.4726984 L19.9333333,20.6642857 L0.0246031746,20.6642857 Z" id="Shape" fill="#EFEFEF"></path>
<path d="M39.9755556,20.6642857 L19.9334921,20.6642857 L19.9334921,35.4726984 L37.8679365,35.4726984 C39.0319048,35.4726984 39.9755556,34.5292063 39.9755556,33.3650794 L39.9755556,20.6642857 Z" id="Shape" fill="#396BD7"></path>
<g id="Group" transform="translate(2.698413, 1.904762)" fill="#FFFFFF">
<circle id="Oval" cx="0.935396825" cy="0.905079365" r="1"></circle>
<circle id="Oval" cx="4.4515873" cy="0.905079365" r="1"></circle>
</g>
<g id="Group" transform="translate(3.492063, 23.333333)" fill="#CCCCCC">
<rect id="Rectangle-path" x="0.0158730159" y="0.0731746032" width="12.9430159" height="1.59809524"></rect>
<rect id="Rectangle-path" x="0.0158730159" y="3.81095238" width="12.9430159" height="1.59809524"></rect>
<rect id="Rectangle-path" x="0.0158730159" y="7.54619048" width="12.9430159" height="1.59809524"></rect>
</g>
</g>
<g id="Group" transform="translate(25.000000, 17.000000)">
<polygon id="Shape" fill="#EDDCC7" points="3.04872727 11.992 3.04290909 11.9970909 1.59709091 17.2989091 4.97672727 13.9192727"></polygon>
<path d="M17.0487273,1.84727273 L16.1418182,0.940363636 C15.5781818,0.376727273 14.664,0.376727273 14.1003636,0.940363636 L11.4952727,3.54545455 L13.4232727,5.47345455 L17.0487273,1.84727273 Z" id="Shape" fill="#D75A4A"></path>
<rect id="Rectangle-path" fill="#F29C21" transform="translate(8.236076, 8.732221) rotate(45.000000) translate(-8.236076, -8.732221) " x="6.87281616" y="2.75991448" width="2.72651931" height="11.9446127"></rect>
<polygon id="Shape" fill="#D6C4B1" points="7.15709091 16.1112727 7.16290909 16.1054545 4.97672727 13.9192727 1.59709091 17.2989091 1.50036364 17.6538182"></polygon>
<path d="M15.6087273,7.65963636 L18.2138182,5.05454545 C18.7774545,4.49090909 18.7774545,3.57672727 18.2138182,3.01309091 L17.0487273,1.848 L13.4232727,5.47345455 L15.6087273,7.65963636 Z" id="Shape" fill="#A34740"></path>
<rect id="Rectangle-path" fill="#E18C25" transform="translate(10.292142, 10.790065) rotate(-135.000000) translate(-10.292142, -10.790065) " x="8.74633901" y="4.81775818" width="3.09160671" height="11.9446127"></rect>
<path d="M0.986181818,18.8952727 C0.8,18.8952727 0.613818182,18.824 0.472,18.6821818 C0.187636364,18.3978182 0.187636364,17.9381818 0.472,17.6538182 L2.07709091,16.0487273 C2.36145455,15.7643636 2.82109091,15.7643636 3.10545455,16.0487273 C3.38981818,16.3330909 3.38981818,16.7927273 3.10545455,17.0770909 L1.50036364,18.6821818 C1.35854545,18.8247273 1.17236364,18.8952727 0.986181818,18.8952727 Z" id="Shape" fill="#5E5E5E"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="39px" height="40px" viewBox="0 0 39 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>database (1)</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-750.000000, -376.000000)" fill-rule="nonzero" id="快速入门">
<g transform="translate(200.000000, 328.000000)">
<g id="Group" transform="translate(529.333333, 32.000000)">
<g id="database-(1)" transform="translate(21.000000, 16.000000)">
<g id="database-(2)">
<path d="M1.638,24.263318 C0.588445312,24.7973849 0,25.3910753 0,26.0177573 C0,28.3434686 8.05900781,30.2284435 18,30.2284435 C27.9409922,30.2284435 36,28.3434686 36,26.0177573 C36,25.3910753 35.4115547,24.7973849 34.362,24.263318 C31.5173672,25.7124854 25.2620859,26.7194854 18,26.7194854 C10.7379141,26.7194854 4.48263281,25.7124854 1.638,24.263318 Z" id="Shape" fill="#396BD7"></path>
<path d="M18,30.228364 C8.05900781,30.228364 0,28.3433891 0,26.0176778 L0,33.7371632 C0,36.0628745 8.05900781,37.9478494 18,37.9478494 C27.9409922,37.9478494 36,36.0628745 36,33.7371632 L36,26.0176778 C36,28.3433891 27.9409922,30.228364 18,30.228364 Z" id="Shape" fill="#4B87EA"></path>
<path d="M1.638,13.034954 C0.588445312,13.5689414 0,14.1626318 0,14.7893138 C0,17.1150251 8.05900781,19 18,19 C27.9409922,19 36,17.1150251 36,14.7893138 C36,14.1626318 35.4115547,13.5689414 34.362,13.0348745 C31.5173672,14.4840418 25.2620859,15.4911213 18,15.4911213 C10.7379141,15.4911213 4.48263281,14.4840418 1.638,13.034954 Z" id="Shape" fill="#396BD7"></path>
<g id="Group" transform="translate(0.000000, 3.497908)" fill="#4B87EA">
<path d="M18,4.27372803 C8.05900781,4.27372803 0,2.38875314 0,0.063041841 L0,7.7825272 C0,8.40920921 0.589007813,9.00289958 1.638,9.53696653 C4.48263281,10.9861339 10.7379141,11.9932134 18,11.9932134 C25.2620859,11.9932134 31.5173672,10.9861339 34.362,9.53696653 C35.4109922,9.00297908 36,8.4092887 36,7.78260669 L36,0.063041841 C36,2.38875314 27.9409922,4.27372803 18,4.27372803 Z" id="Shape"></path>
<path d="M18,15.5020921 C8.05900781,15.5020921 0,13.6171172 0,11.2914059 L0,19.0108912 C0,19.6375732 0.589007813,20.2312636 1.638,20.7653305 C4.48263281,22.2145774 10.7379141,23.2215774 18,23.2215774 C25.2620859,23.2215774 31.5173672,22.2144979 34.362,20.7653305 C35.4109922,20.2313431 36,19.6376527 36,19.0109707 L36,11.2914059 C36,13.6171172 27.9409922,15.5020921 18,15.5020921 Z" id="Shape"></path>
</g>
<path d="M18,0.0520711297 C8.05900781,0.0520711297 0,1.23523849 0,3.56094979 C0,5.88666109 8.05900781,7.77163598 18,7.77163598 C27.9409922,7.77163598 36,5.88666109 36,3.56094979 C36,1.23523849 27.9409922,0.0520711297 18,0.0520711297 Z" id="Shape" fill="#7DBFFF"></path>
<g id="Group" transform="translate(15.468750, 10.573222)" fill="#EFEFEF">
<path d="M0.669164062,0.00548535565 L4.39333594,0.00548535565 C4.73596875,0.00548535565 5.01405469,0.319899582 5.01405469,0.707292887 C5.01405469,1.09468619 4.73596875,1.40910042 4.39333594,1.40910042 L0.669164062,1.40910042 C0.32653125,1.40910042 0.0484453125,1.09468619 0.0484453125,0.707292887 C0.048515625,0.319899582 0.32653125,0.00548535565 0.669164062,0.00548535565 Z" id="Shape"></path>
<path d="M0.669164062,11.2338494 L4.39333594,11.2338494 C4.73596875,11.2338494 5.01405469,11.5482636 5.01405469,11.9356569 C5.01405469,12.3230502 4.73596875,12.6374644 4.39333594,12.6374644 L0.669164062,12.6374644 C0.32653125,12.6374644 0.0484453125,12.3230502 0.0484453125,11.9356569 C0.048515625,11.5482636 0.32653125,11.2338494 0.669164062,11.2338494 Z" id="Shape"></path>
<path d="M0.669164062,22.4622929 L4.39333594,22.4622929 C4.73596875,22.4622929 5.01405469,22.7767071 5.01405469,23.1641004 C5.01405469,23.5514937 4.73596875,23.8659079 4.39333594,23.8659079 L0.669164062,23.8659079 C0.32653125,23.8659079 0.0484453125,23.5514937 0.0484453125,23.1641004 C0.048515625,22.7767071 0.32653125,22.4622929 0.669164062,22.4622929 Z" id="Shape"></path>
</g>
</g>
<g id="Group" transform="translate(19.636364, 21.090909)">
<polygon id="Shape" fill="#EDDCC7" points="3.04872727 11.992 3.04290909 11.9970909 1.59709091 17.2989091 4.97672727 13.9192727"></polygon>
<path d="M17.0487273,1.84727273 L16.1418182,0.940363636 C15.5781818,0.376727273 14.664,0.376727273 14.1003636,0.940363636 L11.4952727,3.54545455 L13.4232727,5.47345455 L17.0487273,1.84727273 Z" id="Shape" fill="#D75A4A"></path>
<rect id="Rectangle-path" fill="#F29C21" transform="translate(8.236076, 8.732221) rotate(45.000000) translate(-8.236076, -8.732221) " x="6.87281616" y="2.75991448" width="2.72651931" height="11.9446127"></rect>
<polygon id="Shape" fill="#D6C4B1" points="7.15709091 16.1112727 7.16290909 16.1054545 4.97672727 13.9192727 1.59709091 17.2989091 1.50036364 17.6538182"></polygon>
<path d="M15.6087273,7.65963636 L18.2138182,5.05454545 C18.7774545,4.49090909 18.7774545,3.57672727 18.2138182,3.01309091 L17.0487273,1.848 L13.4232727,5.47345455 L15.6087273,7.65963636 Z" id="Shape" fill="#A34740"></path>
<rect id="Rectangle-path" fill="#E18C25" transform="translate(10.292142, 10.790065) rotate(-135.000000) translate(-10.292142, -10.790065) " x="8.74633901" y="4.81775818" width="3.09160671" height="11.9446127"></rect>
<path d="M0.986181818,18.8952727 C0.8,18.8952727 0.613818182,18.824 0.472,18.6821818 C0.187636364,18.3978182 0.187636364,17.9381818 0.472,17.6538182 L2.07709091,16.0487273 C2.36145455,15.7643636 2.82109091,15.7643636 3.10545455,16.0487273 C3.38981818,16.3330909 3.38981818,16.7927273 3.10545455,17.0770909 L1.50036364,18.6821818 C1.35854545,18.8247273 1.17236364,18.8952727 0.986181818,18.8952727 Z" id="Shape" fill="#5E5E5E"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="30px" height="40px" viewBox="0 0 30 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>java</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-1019.000000, -376.000000)" fill-rule="nonzero" id="快速入门">
<g transform="translate(200.000000, 328.000000)">
<g id="Group" transform="translate(794.000000, 32.000000)">
<g id="java" transform="translate(25.000000, 16.000000)">
<g id="Group" transform="translate(9.140625, 0.000000)" fill="#DB380E">
<path d="M5.505,7.41164062 C3.65671875,8.7115625 1.56195312,10.1849219 0.43953125,12.6225 C-1.51,16.8752344 4.42875,21.5140625 4.68257813,21.7094531 C4.7415625,21.7548437 4.8121875,21.7775 4.88257813,21.7775 C4.95734375,21.7775 5.0321875,21.7519531 5.09296875,21.7010156 C5.21085938,21.6024219 5.24429688,21.4349219 5.17351563,21.2985156 C5.15203125,21.2571094 3.0203125,17.1164844 3.09953125,14.1460156 C3.12757813,13.1114062 4.57546875,11.9377344 6.10828125,10.6951563 C7.5121875,9.55703125 9.10359375,8.26710937 10.0346875,6.758125 C12.07875,3.4365625 9.806875,0.17046875 9.78367187,0.1378125 C9.6934375,0.01109375 9.526875,-0.034765625 9.38445313,0.02765625 C9.2421875,0.09046875 9.16335938,0.244296875 9.19585938,0.39640625 C9.20046875,0.418046875 9.64226563,2.57789062 8.41289063,4.803125 C7.90648437,5.72265625 6.79367188,6.5053125 5.505,7.41164062 Z" id="Shape"></path>
<path d="M13.2919531,8.87632813 C13.4223437,8.778125 13.460625,8.59898438 13.3817969,8.45601563 C13.3028125,8.31304688 13.1309375,8.25 12.9782812,8.30796875 C12.6642969,8.42734375 5.28953125,11.2700781 5.28953125,14.7048438 C5.28953125,17.0725781 6.3009375,18.3233594 7.03945312,19.2367969 C7.32914062,19.5950781 7.57921875,19.9044531 7.66164062,20.1685937 C7.89367187,20.9297656 7.34398437,22.3055469 7.1128125,22.7714844 C7.04617187,22.9053906 7.07882812,23.0677344 7.1921875,23.1655469 C7.2534375,23.2184375 7.32992187,23.2453125 7.40648437,23.2453125 C7.47164063,23.2453125 7.53710938,23.2259375 7.59367188,23.1865625 C7.72046875,23.0984375 10.6926562,20.9970312 10.1596094,18.4652344 C9.96101563,17.5028906 9.488125,16.7997656 9.07085938,16.1792969 C8.42445313,15.2179688 7.95757813,14.5235937 8.66585938,13.2410938 C9.49570313,11.7451562 13.2539062,8.90476562 13.2919531,8.87632813 Z" id="Shape"></path>
</g>
<g id="Group" transform="translate(0.000000, 21.015625)" fill="#73A1FB">
<path d="M3.23578125,2.2840625 C3.109375,2.66257813 3.1690625,3.03804688 3.40820313,3.37023438 C4.20765625,4.48015625 7.03945313,5.09125 11.3822656,5.09125 C11.3825,5.09125 11.3826563,5.09125 11.3828125,5.09125 C11.97125,5.09125 12.5925,5.0796875 13.2288281,5.056875 C20.1721875,4.80835938 22.7475,2.64523438 22.85375,2.55328125 C22.9695312,2.45304688 23.0004687,2.28617188 22.9285156,2.15117188 C22.8564844,2.01625 22.70125,1.9484375 22.5528906,1.98929688 C20.1075,2.65695313 15.5413281,2.89398438 12.3741406,2.89398438 C8.83015625,2.89398438 7.0253125,2.63867188 6.5834375,2.45015625 C6.81015625,2.13882813 8.20859375,1.58289063 9.94148437,1.24203125 C10.1071094,1.20953125 10.2209375,1.0565625 10.2045312,0.88859375 C10.188125,0.720625 10.0470312,0.5925 9.87820312,0.5925 C8.86242187,0.5925 3.76828125,0.6740625 3.23578125,2.2840625 Z" id="Shape"></path>
<path d="M26.4696875,0.05609375 C25.0375781,0.05609375 23.6795313,0.77390625 23.6223437,0.804296875 C23.4899219,0.875234375 23.4227344,1.02710937 23.4590625,1.17304688 C23.4955469,1.31875 23.6265625,1.42117188 23.7767969,1.42132813 C23.8071875,1.42132813 26.8316406,1.44609375 27.1055469,3.17414063 C27.3482031,4.66492188 24.2439063,7.08039062 23.0272656,7.88539062 C22.8958594,7.97234375 22.8448438,8.1403125 22.9058594,8.285625 C22.9578125,8.40929687 23.0782031,8.48664062 23.2080469,8.48664062 C23.2307031,8.48664062 23.2536719,8.48429687 23.2764844,8.47945312 C23.5652344,8.41765625 30.3394531,6.92484375 29.6232031,2.98070312 C29.18625,0.563515625 27.6670313,0.05609375 26.4696875,0.05609375 Z" id="Shape"></path>
<path d="M21.8239844,7.40273438 C21.8475781,7.27640625 21.795,7.14789063 21.6898437,7.0740625 L20.0655469,5.93632813 C19.9863281,5.88085938 19.88625,5.8634375 19.7932812,5.88804688 C19.7763281,5.89234375 18.0777344,6.33890625 15.6116406,6.61273438 C14.6328906,6.7225 13.5366406,6.78046875 12.4411719,6.78046875 C9.97570313,6.78046875 8.36367188,6.49078125 8.12890625,6.27828125 C8.0978125,6.21859375 8.10765625,6.19148438 8.11320313,6.17640625 C8.15585938,6.0578125 8.38445313,5.916875 8.53179688,5.86109375 C8.69453125,5.80085938 8.78226563,5.62414063 8.73164063,5.45820313 C8.68117188,5.29203125 8.51,5.19429688 8.34109375,5.23484375 C6.71171875,5.62804688 5.915,6.17789063 5.97296875,6.8690625 C6.0759375,8.09453125 8.914375,8.72351563 11.3139844,8.88976563 C11.6590625,8.91335938 12.0322656,8.9253125 12.4229688,8.9253125 C12.4232031,8.9253125 12.4233594,8.9253125 12.4235938,8.9253125 C16.41375,8.9253125 21.5290625,7.67335938 21.5801562,7.660625 C21.7050781,7.63015625 21.8003125,7.52929688 21.8239844,7.40273438 Z" id="Shape"></path>
<path d="M9.57828125,10.0327344 C9.70132812,9.95273437 9.75585938,9.800625 9.7121875,9.66054687 C9.66867188,9.52046875 9.53765625,9.4284375 9.39046875,9.43039062 C9.17210938,9.43617187 7.25382813,9.52273437 7.11953125,10.7440625 C7.07890625,11.1090625 7.1834375,11.4425781 7.43039063,11.7351562 C8.11914062,12.5514062 9.97835938,13.0365625 13.1132812,13.2182812 C13.4841406,13.2405469 13.8608594,13.2517187 14.233125,13.2517187 C18.2186719,13.2517187 20.9028906,12.0038281 21.0153125,11.9507031 C21.1242969,11.8991406 21.1961719,11.7920312 21.2025781,11.6717187 C21.2089844,11.5514062 21.1489062,11.4372656 21.0460938,11.374375 L18.9933594,10.12125 C18.9221094,10.0778125 18.836875,10.0634375 18.755625,10.0800781 C18.7426563,10.0828125 17.4392969,10.353125 15.4723438,10.6201562 C15.1001563,10.6707812 14.6340625,10.6964844 14.0871875,10.6964844 C12.1223438,10.6964844 9.936875,10.3754687 9.51773438,10.1652344 C9.51164063,10.1260156 9.519375,10.0761719 9.57828125,10.0327344 Z" id="Shape"></path>
<path d="M12.375625,17.0195312 C21.5048437,17.0117969 26.4046094,15.3882813 27.3485156,14.3666406 C27.6826563,14.0052344 27.71875,13.6630469 27.6903906,13.4395313 C27.6202344,12.8895313 27.1192188,12.5528125 27.0624219,12.51625 C26.9253906,12.428125 26.7414844,12.4511719 26.6346094,12.5744531 C26.5279687,12.6977344 26.5254687,12.8778906 26.6325,13.0010938 C26.6900781,13.0751563 26.7233594,13.1991406 26.555,13.3676563 C26.1776562,13.7200781 22.3717969,14.7898438 16.035,15.11125 C15.1669531,15.1563281 14.2564844,15.1792969 13.3290625,15.1794531 C7.65539062,15.1794531 3.503125,14.4022656 2.95804687,13.9494531 C3.168125,13.6475781 4.636875,13.1653125 6.19882812,12.8925 C6.37484375,12.8617969 6.49375,12.6959375 6.46648437,12.519375 C6.43921875,12.3428906 6.27648437,12.2214062 6.09859375,12.2444531 C6.05453125,12.2504688 5.905,12.259375 5.731875,12.27 C3.1546875,12.4273438 0.176484375,12.7780469 0.02109375,14.1059375 C-0.02609375,14.5105469 0.094140625,14.8778906 0.37859375,15.1975781 C1.07460937,15.9796094 3.07515625,17.019375 12.3753125,17.019375 C12.3754688,17.0195312 12.3754688,17.0195312 12.375625,17.0195312 Z" id="Shape"></path>
<path d="M29.1416406,14.6545312 C29.0125781,14.5948437 28.8600781,14.625 28.7638281,14.7289062 C28.7504687,14.7433594 27.3778906,16.1785937 23.2510156,17.0214062 C21.6710937,17.3379687 18.7054687,17.4985156 14.4364844,17.4985156 C10.1595312,17.4985156 6.08976562,17.3302344 6.04921875,17.3285156 C5.87921875,17.3202344 5.73382812,17.4438281 5.71070312,17.6111719 C5.6875,17.7783594 5.7953125,17.9360156 5.95945312,17.9750781 C6.00179687,17.9850781 10.266875,18.9842969 16.0984375,18.9842969 C18.8953906,18.9842969 21.6171094,18.7571875 24.188125,18.3089063 C28.9819531,17.4685156 29.3175781,15.0914844 29.3295312,14.9907031 C29.34625,14.8498437 29.2704687,14.7142187 29.1416406,14.6545312 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="36px" height="38px" viewBox="0 0 36 38" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>admin</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-222.000000, -645.000000)" fill-rule="nonzero" id="主要功能">
<g transform="translate(200.000000, 596.000000)">
<g id="Group" transform="translate(0.000000, 32.000000)">
<g id="admin" transform="translate(22.000000, 17.000000)">
<path d="M31.954375,19 C31.954375,18.52525 31.930625,18.056125 31.884375,17.5935 C31.822125,16.96925 32.06325,16.353125 32.544,15.95 L35.01625,13.87675 C35.714375,13.29125 35.891375,12.288625 35.43575,11.4995 L33.150875,7.54225 C32.695125,6.753125 31.738625,6.405125 30.882375,6.716875 L27.850625,7.82125 C27.260375,8.03625 26.6055,7.9365 26.09575,7.569375 C25.33675,7.0225 24.521125,6.5495 23.6595,6.1605 C23.08825,5.9025 22.67625,5.385875 22.567375,4.7685 L22.008625,1.59375 C21.850625,0.69625 21.071,0.04175 20.1595,0.04175 L15.590125,0.04175 C14.678875,0.04175 13.89925,0.696125 13.741,1.59375 L13.18225,4.7685 C13.073625,5.385875 12.661625,5.902625 12.090125,6.1605 C11.228375,6.5495 10.41275,7.0225 9.653875,7.569375 C9.14425,7.936625 8.489375,8.036375 7.899,7.82125 L4.86725,6.716875 C4.010875,6.404875 3.054375,6.752875 2.59875,7.54225 L0.313875,11.4995 C-0.141875,12.288625 0.035,13.29125 0.733375,13.87675 L3.205625,15.95 C3.686375,16.353125 3.9275,16.969 3.86525,17.5935 C3.819125,18.056125 3.79525,18.52525 3.79525,19 C3.79525,19.478125 3.819375,19.95075 3.866125,20.416375 C3.929,21.042375 3.686875,21.65975 3.203875,22.063125 L0.737375,24.123625 C0.037,24.708625 -0.141125,25.712875 0.315,26.50325 L2.59675,30.45525 C3.053125,31.245625 4.011625,31.5935 4.868625,31.27925 L7.886375,30.173375 C8.477875,29.956625 9.13475,30.056125 9.645625,30.424875 C10.4095,30.976125 11.23075,31.45275 12.09875,31.843625 C12.67175,32.10175 13.084625,32.6205 13.192375,33.2395 L13.743,36.402625 C13.8995,37.301875 14.68,37.958 15.5925,37.958 L20.155875,37.958 C21.0685,37.958 21.849,37.301625 22.005375,36.402625 L22.556,33.2395 C22.66375,32.620375 23.076625,32.10175 23.649625,31.843625 C24.517875,31.4525 25.339,30.976125 26.10275,30.424875 C26.6135,30.056125 27.2705,29.956625 27.862,30.173375 L30.87975,31.27925 C31.73675,31.59325 32.69525,31.245625 33.151625,30.45525 L35.433375,26.50325 C35.88975,25.712875 35.711625,24.708875 35.011,24.123625 L32.5445,22.063125 C32.06175,21.65975 31.819625,21.042375 31.88225,20.416375 C31.93025,19.95075 31.954375,19.478125 31.954375,19 Z" id="Shape" fill="#1A8763"></path>
<path d="M15.512,37.95825 L20.23825,37.95825 C21.294125,37.95825 22.15,37.102375 22.15,36.0465 L22.15,26.64825 C22.15,26.497875 22.028,26.375625 21.877375,26.375625 L13.872625,26.375625 C13.72225,26.375625 13.6,26.497625 13.6,26.64825 L13.6,36.0465 C13.600125,37.10225 14.456125,37.95825 15.512,37.95825 Z" id="Shape" fill="#CCD1D0"></path>
<path d="M22.204625,9.954625 L22.204625,18.521125 L17.836625,20.235125 L13.468875,18.521125 L13.468875,9.993875 C10.405125,11.587625 8.311125,14.789125 8.311125,18.4815 C8.311125,23.7635 12.593125,28.04525 17.874875,28.04525 C23.156875,28.04525 27.438625,23.76325 27.438625,18.4815 C27.43875,14.7585 25.31,11.534625 22.204625,9.954625 Z" id="Shape" fill="#F5F5F5"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="49px" height="40px" viewBox="0 0 49 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>开发流水线</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-484.000000, -644.000000)" fill-rule="nonzero" id="主要功能">
<g transform="translate(200.000000, 596.000000)">
<g id="Group" transform="translate(264.666667, 32.000000)">
<g id="开发流水线" transform="translate(20.000000, 16.000000)">
<path d="M0,5.2173913 L47.826087,5.2173913 L47.826087,40 L2.60869565,40 C1.16793478,40 0,38.8320652 0,37.3913043 L0,5.2173913 Z" id="Shape" fill="#E6E6E6"></path>
<g id="Group-9" transform="translate(30.000000, 22.000000)">
<circle id="Oval" fill="#D78017" cx="7" cy="7" r="7"></circle>
<g id="Group" transform="translate(1.000000, 2.000000)" fill="#FFFFFF">
<polygon id="Shape" points="3.03392775 7.74015285 0.0172382259 4.88447972 3.03392775 2.03733098 3.9303155 2.9664903 1.89620485 4.88447972 3.9303155 6.81099353"></polygon>
<polygon id="Shape" points="9.37759488 7.74015285 8.48120713 6.81099353 10.5153178 4.88447972 8.48120713 2.9664903 9.37759488 2.03733098 12.3942844 4.88447972"></polygon>
<rect id="Rectangle-path" transform="translate(6.205533, 4.885953) rotate(-158.419895) translate(-6.205533, -4.885953) " x="5.55909644" y="-0.0405284322" width="1.29286103" height="9.85407308"></rect>
</g>
</g>
<g id="Group" fill="#396BD7">
<path d="M0,37.3913043 C0,35.9505435 1.16793478,34.7826087 2.60869565,34.7826087 L5.2173913,34.7826087 L5.2173913,0 L2.60869565,0 C1.16793478,0 0,1.16793478 0,2.60869565 L0,37.3913043 Z" id="Shape"></path>
<polygon id="Shape" points="13.9130435 20.8695652 20 20.8695652 20 22.6086957 13.9130435 22.6086957"></polygon>
<polygon id="Shape" points="11.3043478 13.9130435 13.0434783 13.9130435 13.0434783 20 11.3043478 20"></polygon>
<polygon id="Shape" points="13.9130435 11.3043478 20 11.3043478 20 13.0434783 13.9130435 13.0434783"></polygon>
</g>
<g id="Group" transform="translate(8.695652, 27.826087)" fill="#999999">
<polygon id="Shape" points="0 3.47826087 12.173913 3.47826087 12.173913 5.2173913 0 5.2173913"></polygon>
<polygon id="Shape" points="0 6.95652174 12.173913 6.95652174 12.173913 8.69565217 0 8.69565217"></polygon>
<polygon id="Shape" points="3.47826087 0 12.173913 0 12.173913 1.73913043 3.47826087 1.73913043"></polygon>
<polygon id="Shape" points="0 0 1.73913043 0 1.73913043 1.73913043 0 1.73913043"></polygon>
</g>
<g id="Group" transform="translate(9.565217, 9.565217)" fill="#679CEF">
<polygon id="Shape" points="0 0 5.2173913 0 5.2173913 5.2173913 0 5.2173913"></polygon>
<polygon id="Shape" points="9.56521739 0 18.2608696 0 18.2608696 5.2173913 9.56521739 5.2173913"></polygon>
<polygon id="Shape" points="0 9.56521739 5.2173913 9.56521739 5.2173913 14.7826087 0 14.7826087"></polygon>
<polygon id="Shape" points="9.56521739 9.56521739 18.2608696 9.56521739 18.2608696 14.7826087 9.56521739 14.7826087"></polygon>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="49px" height="40px" viewBox="0 0 49 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>部署流水线</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-749.000000, -644.000000)" id="主要功能">
<g transform="translate(200.000000, 596.000000)">
<g id="Group" transform="translate(529.333333, 32.000000)">
<g id="部署流水线" transform="translate(20.000000, 16.000000)">
<path d="M0,5.2173913 L47.826087,5.2173913 L47.826087,40 L2.60869565,40 C1.16793478,40 0,38.8320652 0,37.3913043 L0,5.2173913 Z" id="Shape" fill="#E6E6E6" fill-rule="nonzero"></path>
<g id="ic_cloud_upload_black_24px" transform="translate(30.000000, 22.000000)">
<polygon id="Shape" points="0 0 14 0 14 14 0 14"></polygon>
<path d="M11.2875,5.85666667 C10.8908333,3.84416667 9.12333333,2.33333333 7,2.33333333 C5.31416667,2.33333333 3.85,3.29 3.12083333,4.69 C1.365,4.87666667 0,6.36416667 0,8.16666667 C0,10.0975 1.56916667,11.6666667 3.5,11.6666667 L11.0833333,11.6666667 C12.6933333,11.6666667 14,10.36 14,8.75 C14,7.21 12.8041667,5.96166667 11.2875,5.85666667 Z M8.16666667,7.58333333 L8.16666667,9.91666667 L5.83333333,9.91666667 L5.83333333,7.58333333 L4.08333333,7.58333333 L7,4.66666667 L9.91666667,7.58333333 L8.16666667,7.58333333 Z" id="Shape" fill="#D78017" fill-rule="nonzero"></path>
</g>
<g id="Group" fill="#396BD7" fill-rule="nonzero">
<path d="M0,37.3913043 C0,35.9505435 1.16793478,34.7826087 2.60869565,34.7826087 L5.2173913,34.7826087 L5.2173913,0 L2.60869565,0 C1.16793478,0 0,1.16793478 0,2.60869565 L0,37.3913043 Z" id="Shape"></path>
<polygon id="Shape" points="13.9130435 20.8695652 20 20.8695652 20 22.6086957 13.9130435 22.6086957"></polygon>
<polygon id="Shape" points="11.3043478 13.9130435 13.0434783 13.9130435 13.0434783 20 11.3043478 20"></polygon>
<polygon id="Shape" points="13.9130435 11.3043478 20 11.3043478 20 13.0434783 13.9130435 13.0434783"></polygon>
</g>
<g id="Group" transform="translate(8.695652, 27.826087)" fill="#999999" fill-rule="nonzero">
<polygon id="Shape" points="0 3.47826087 12.173913 3.47826087 12.173913 5.2173913 0 5.2173913"></polygon>
<polygon id="Shape" points="0 6.95652174 12.173913 6.95652174 12.173913 8.69565217 0 8.69565217"></polygon>
<polygon id="Shape" points="3.47826087 0 12.173913 0 12.173913 1.73913043 3.47826087 1.73913043"></polygon>
<polygon id="Shape" points="0 0 1.73913043 0 1.73913043 1.73913043 0 1.73913043"></polygon>
</g>
<g id="Group" transform="translate(9.565217, 9.565217)" fill="#679CEF" fill-rule="nonzero">
<polygon id="Shape" points="0 0 5.2173913 0 5.2173913 5.2173913 0 5.2173913"></polygon>
<polygon id="Shape" points="9.56521739 0 18.2608696 0 18.2608696 5.2173913 9.56521739 5.2173913"></polygon>
<polygon id="Shape" points="0 9.56521739 5.2173913 9.56521739 5.2173913 14.7826087 0 14.7826087"></polygon>
<polygon id="Shape" points="9.56521739 9.56521739 18.2608696 9.56521739 18.2608696 14.7826087 9.56521739 14.7826087"></polygon>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="40px" height="36px" viewBox="0 0 40 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>browser</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-220.000000, -914.000000)" fill-rule="nonzero" id="开发手册">
<g transform="translate(200.000000, 864.000000)">
<g id="Group" transform="translate(0.000000, 32.000000)">
<g id="browser" transform="translate(20.000000, 18.000000)">
<path d="M37.8679365,35.4730159 L2.13206349,35.4730159 C0.968095238,35.4730159 0.0244444444,34.5295238 0.0244444444,33.3653968 L0.0244444444,2.26396825 C0.0244444444,1.1 0.967936508,0.156349206 2.13206349,0.156349206 L37.8674603,0.156349206 C39.0314286,0.156349206 39.9750794,1.09984127 39.9750794,2.26396825 L39.9750794,33.3650794 C39.9753968,34.5292063 39.0315873,35.4730159 37.8679365,35.4730159 Z" id="Shape" fill="#4B87EA"></path>
<path d="M39.9753968,5.61031746 L0.0246031746,5.61031746 L0.0246031746,2.26396825 C0.0246031746,1.1 0.968095238,0.156349206 2.13222222,0.156349206 L37.867619,0.156349206 C39.0315873,0.156349206 39.9752381,1.09984127 39.9752381,2.26396825 L39.9753968,5.61031746 Z" id="Shape" fill="#A9A9A9"></path>
<path d="M0.0246031746,20.6642857 L0.0246031746,33.3650794 C0.0246031746,34.5290476 0.968095238,35.4726984 2.13222222,35.4726984 L19.9333333,35.4726984 L19.9333333,20.6642857 L0.0246031746,20.6642857 Z" id="Shape" fill="#EFEFEF"></path>
<path d="M39.9755556,20.6642857 L19.9334921,20.6642857 L19.9334921,35.4726984 L37.8679365,35.4726984 C39.0319048,35.4726984 39.9755556,34.5292063 39.9755556,33.3650794 L39.9755556,20.6642857 Z" id="Shape" fill="#396BD7"></path>
<g id="Group" transform="translate(2.698413, 1.904762)" fill="#FFFFFF">
<circle id="Oval" cx="0.935396825" cy="0.905079365" r="1"></circle>
<circle id="Oval" cx="4.4515873" cy="0.905079365" r="1"></circle>
</g>
<g id="Group" transform="translate(3.492063, 23.333333)" fill="#CCCCCC">
<rect id="Rectangle-path" x="0.0158730159" y="0.0731746032" width="12.9430159" height="1.59809524"></rect>
<rect id="Rectangle-path" x="0.0158730159" y="3.81095238" width="12.9430159" height="1.59809524"></rect>
<rect id="Rectangle-path" x="0.0158730159" y="7.54619048" width="12.9430159" height="1.59809524"></rect>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="41px" height="39px" viewBox="0 0 41 39" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49 (51002) - http://www.bohemiancoding.com/sketch -->
<title>database</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="首页" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-485.000000, -914.000000)" fill-rule="nonzero" id="开发手册">
<g transform="translate(200.000000, 864.000000)">
<g id="Group" transform="translate(264.666667, 32.000000)">
<g id="database" transform="translate(21.000000, 18.000000)">
<g id="database-(2)">
<path d="M1.638,24.263318 C0.588445312,24.7973849 0,25.3910753 0,26.0177573 C0,28.3434686 8.05900781,30.2284435 18,30.2284435 C27.9409922,30.2284435 36,28.3434686 36,26.0177573 C36,25.3910753 35.4115547,24.7973849 34.362,24.263318 C31.5173672,25.7124854 25.2620859,26.7194854 18,26.7194854 C10.7379141,26.7194854 4.48263281,25.7124854 1.638,24.263318 Z" id="Shape" fill="#396BD7"></path>
<path d="M18,30.228364 C8.05900781,30.228364 0,28.3433891 0,26.0176778 L0,33.7371632 C0,36.0628745 8.05900781,37.9478494 18,37.9478494 C27.9409922,37.9478494 36,36.0628745 36,33.7371632 L36,26.0176778 C36,28.3433891 27.9409922,30.228364 18,30.228364 Z" id="Shape" fill="#4B87EA"></path>
<path d="M1.638,13.034954 C0.588445312,13.5689414 0,14.1626318 0,14.7893138 C0,17.1150251 8.05900781,19 18,19 C27.9409922,19 36,17.1150251 36,14.7893138 C36,14.1626318 35.4115547,13.5689414 34.362,13.0348745 C31.5173672,14.4840418 25.2620859,15.4911213 18,15.4911213 C10.7379141,15.4911213 4.48263281,14.4840418 1.638,13.034954 Z" id="Shape" fill="#396BD7"></path>
<g id="Group" transform="translate(0.000000, 3.497908)" fill="#4B87EA">
<path d="M18,4.27372803 C8.05900781,4.27372803 0,2.38875314 0,0.063041841 L0,7.7825272 C0,8.40920921 0.589007813,9.00289958 1.638,9.53696653 C4.48263281,10.9861339 10.7379141,11.9932134 18,11.9932134 C25.2620859,11.9932134 31.5173672,10.9861339 34.362,9.53696653 C35.4109922,9.00297908 36,8.4092887 36,7.78260669 L36,0.063041841 C36,2.38875314 27.9409922,4.27372803 18,4.27372803 Z" id="Shape"></path>
<path d="M18,15.5020921 C8.05900781,15.5020921 0,13.6171172 0,11.2914059 L0,19.0108912 C0,19.6375732 0.589007813,20.2312636 1.638,20.7653305 C4.48263281,22.2145774 10.7379141,23.2215774 18,23.2215774 C25.2620859,23.2215774 31.5173672,22.2144979 34.362,20.7653305 C35.4109922,20.2313431 36,19.6376527 36,19.0109707 L36,11.2914059 C36,13.6171172 27.9409922,15.5020921 18,15.5020921 Z" id="Shape"></path>
</g>
<path d="M18,0.0520711297 C8.05900781,0.0520711297 0,1.23523849 0,3.56094979 C0,5.88666109 8.05900781,7.77163598 18,7.77163598 C27.9409922,7.77163598 36,5.88666109 36,3.56094979 C36,1.23523849 27.9409922,0.0520711297 18,0.0520711297 Z" id="Shape" fill="#7DBFFF"></path>
<g id="Group" transform="translate(15.468750, 10.573222)" fill="#EFEFEF">
<path d="M0.669164062,0.00548535565 L4.39333594,0.00548535565 C4.73596875,0.00548535565 5.01405469,0.319899582 5.01405469,0.707292887 C5.01405469,1.09468619 4.73596875,1.40910042 4.39333594,1.40910042 L0.669164062,1.40910042 C0.32653125,1.40910042 0.0484453125,1.09468619 0.0484453125,0.707292887 C0.048515625,0.319899582 0.32653125,0.00548535565 0.669164062,0.00548535565 Z" id="Shape"></path>
<path d="M0.669164062,11.2338494 L4.39333594,11.2338494 C4.73596875,11.2338494 5.01405469,11.5482636 5.01405469,11.9356569 C5.01405469,12.3230502 4.73596875,12.6374644 4.39333594,12.6374644 L0.669164062,12.6374644 C0.32653125,12.6374644 0.0484453125,12.3230502 0.0484453125,11.9356569 C0.048515625,11.5482636 0.32653125,11.2338494 0.669164062,11.2338494 Z" id="Shape"></path>
<path d="M0.669164062,22.4622929 L4.39333594,22.4622929 C4.73596875,22.4622929 5.01405469,22.7767071 5.01405469,23.1641004 C5.01405469,23.5514937 4.73596875,23.8659079 4.39333594,23.8659079 L0.669164062,23.8659079 C0.32653125,23.8659079 0.0484453125,23.5514937 0.0484453125,23.1641004 C0.048515625,22.7767071 0.32653125,22.4622929 0.669164062,22.4622929 Z" id="Shape"></path>
</g>
</g>
<g id="Group" transform="translate(23.052632, 22.157895)">
<path d="M17.1929825,7.61122807 L16.1796491,7.41614035 C14.6757895,7.12701754 13.9866667,5.36982456 14.8919298,4.1354386 L15.5284211,3.26807018 L14.154386,1.89403509 L13.3003509,2.47298246 C12.0329825,3.33192982 10.3024561,2.57684211 10.0694737,1.06385965 L9.90526316,0 L7.96210526,0 L7.71017544,1.30877193 C7.42736842,2.77964912 5.73263158,3.48140351 4.49263158,2.64140351 L3.38947368,1.89403509 L2.0154386,3.26807018 L2.65192982,4.1354386 C3.55719298,5.37052632 2.86807018,7.12701754 1.36421053,7.41614035 L0.350877193,7.61122807 L0.350877193,9.55438596 L1.41403509,9.71789474 C2.9277193,9.95087719 3.68210526,11.6807018 2.82315789,12.9487719 L2.24421053,13.802807 L3.61824561,15.1768421 L4.48561404,14.5403509 C5.72070175,13.6350877 7.47719298,14.3242105 7.76631579,15.8280702 L7.96210526,16.8421053 L9.90526316,16.8421053 L10.0203509,16.0940351 C10.2582456,14.5473684 12.0526316,13.8042105 13.314386,14.7298246 L13.9242105,15.1775439 L15.2982456,13.8035088 L14.7192982,12.9494737 C13.8603509,11.6821053 14.6154386,9.95157895 16.1284211,9.71859649 L17.1915789,9.55508772 L17.1915789,7.61122807 L17.1929825,7.61122807 Z" id="Shape" fill="#BDC3C7"></path>
<g transform="translate(4.912281, 4.912281)">
<circle id="Oval" fill="#FFFFFF" cx="3.85964912" cy="3.50877193" r="2.80701754"></circle>
<path d="M3.85964912,7.01754386 C1.92491228,7.01754386 0.350877193,5.44350877 0.350877193,3.50877193 C0.350877193,1.57403509 1.92491228,0 3.85964912,0 C5.79438596,0 7.36842105,1.57403509 7.36842105,3.50877193 C7.36842105,5.44350877 5.79438596,7.01754386 3.85964912,7.01754386 Z M3.85964912,1.40350877 C2.69894737,1.40350877 1.75438596,2.34807018 1.75438596,3.50877193 C1.75438596,4.66947368 2.69894737,5.61403509 3.85964912,5.61403509 C5.02035088,5.61403509 5.96491228,4.66947368 5.96491228,3.50877193 C5.96491228,2.34807018 5.02035088,1.40350877 3.85964912,1.40350877 Z" id="Shape" fill="#ECF0F1"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
'use strict';
require('./index.scss');
\ No newline at end of file
$link-color: #333;
.choerodon-home {
//background-image: url('./backage@2x.png');
width: 100%;
height: 100%;
background: #f2f6ff;
.choerodon-home-content {
width: 100%;
img {
background-size: contain;
width: 100%;
}
}
.search-box {
width: 100%;
height: 62px;
margin-top: -18px;
padding: 0 200px;
.search {
width: 100%;
height: 100%;
background: #fff;
box-shadow: 0 2px 4px 0 rgba(118, 53, 249, 0.50);
position: relative;
&:focus {
border: 1px solid rgba(96, 78, 251, 0.80);
box-shadow: 0 2px 4px 0 rgba(118, 53, 249, 0.50);
}
&:hover {
border: 1px solid rgba(96, 78, 251, 0.80);
box-shadow: 0 2px 4px 0 rgba(118, 53, 249, 0.50);
}
input {
height: 100%;
border: 0 !important;
width: 77%;
font-size: 16px;
color: #1c1549;
padding: 9px 15px;
outline: none !important;
&:focus {
border: none !important;
outline: none !important;
}
&:hover {
border: none !important;
outline: none !important;
}
}
.search-button {
width: 145px;
height: 43px;
margin: 9px;
background: #604efb;
line-height: 42px;
font-size: 16px;
color: #fff;
letter-spacing: 0;
float: right;
text-align: center;
cursor: pointer;
}
}
}
.function {
padding: 24px 200px;
width: 100%;
height: 200px;
.list {
height: 100%;
// border: 1px solid red;
float: left;
width: 120px;
margin-right: 150px;
img {
height: 32px;
margin-bottom: 16px;
}
.item {
width: 112px;
height: 32px;
background: rgba(35, 132, 255, 0.20);
font-size: 16px;
color: #0046b8;
letter-spacing: 0;
text-align: center;
line-height: 32px;
margin-bottom: 16px;
cursor: pointer;
}
}
}
}
This diff is collapsed.
This diff is collapsed.
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _IframeWrapper = require('./IframeWrapper');
var _IframeWrapper2 = _interopRequireDefault(_IframeWrapper);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = _IframeWrapper2['default'];
\ No newline at end of file
.ant-tabs-bar {
display: none;
}
iframe {
border: none;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment