diff --git a/Makefile b/Makefile index 3dc6fcca..979e6e32 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,10 @@ PATH := $(PATH):$(GOPATH)/bin CURDIR := $(shell pwd) OLDGOPATH:= $(GOPATH) +CMD_DIR := $(CURDIR)/cmd +OUTPUT_DIR := $(CURDIR)/bin + + # INFINI framework INFINI_BASE_FOLDER := $(OLDGOPATH)/src/infini.sh/ FRAMEWORK_FOLDER := $(INFINI_BASE_FOLDER)framework/ @@ -62,52 +66,54 @@ default: build build: config @#echo $(GOPATH) @echo $(NEWGOPATH) - $(GOBUILD) -o bin/$(APP_NAME) + $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME) @$(MAKE) restore-generated-file build-cmd: config @$(MAKE) restore-generated-file + @for f in $(shell ls ${CMD_DIR}); do (cd $(CMD_DIR)/$${f} && $(GOBUILD) -o $(OUTPUT_DIR)/$${f}); done + # used to build the binary for gdb debugging build-race: clean config update-vfs - $(GOBUILD) -gcflags "-m -N -l" -race -o bin/$(APP_NAME) + $(GOBUILD) -gcflags "-m -N -l" -race -o $(OUTPUT_DIR)/$(APP_NAME) @$(MAKE) restore-generated-file tar: build - cd bin && tar cfz ../bin/$(APP_NAME).tar.gz $(APP_NAME) $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/$(APP_NAME).tar.gz $(APP_NAME) $(APP_CONFIG) cross-build: clean config update-vfs $(GO) test - GOOS=windows GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-windows64.exe - GOOS=darwin GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-darwin64 - GOOS=linux GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-linux64 + GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows64.exe + GOOS=darwin GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-darwin64 + GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux64 @$(MAKE) restore-generated-file build-win: - CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-windows64.exe - CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ GOOS=windows GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-windows32.exe + CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows64.exe + CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ GOOS=windows GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows32.exe build-linux: - GOOS=linux GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-linux64 - GOOS=linux GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-linux32 + GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux64 + GOOS=linux GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux32 build-arm: - GOOS=linux GOARCH=arm GOARM=5 $(GOBUILD) -o bin/$(APP_NAME)-armv5 + GOOS=linux GOARCH=arm GOARM=5 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-armv5 # for Raspberry Pi #env GOOS=linux GOARCH=arm GOARM=5 go build build-darwin: - GOOS=darwin GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-darwin64 - #GOOS=darwin GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-darwin32 + GOOS=darwin GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-darwin64 + #GOOS=darwin GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-darwin32 build-bsd: - GOOS=freebsd GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-freebsd64 - GOOS=freebsd GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-freebsd32 - GOOS=netbsd GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-netbsd64 - GOOS=netbsd GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-netbsd32 - GOOS=openbsd GOARCH=amd64 $(GOBUILD) -o bin/$(APP_NAME)-openbsd64 - GOOS=openbsd GOARCH=386 $(GOBUILD) -o bin/$(APP_NAME)-openbsd32 + GOOS=freebsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-freebsd64 + GOOS=freebsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-freebsd32 + GOOS=netbsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-netbsd64 + GOOS=netbsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-netbsd32 + GOOS=openbsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-openbsd64 + GOOS=openbsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-openbsd32 all: clean config update-vfs cross-build restore-generated-file @@ -124,8 +130,8 @@ clean_data: rm -rif log clean: clean_data - rm -rif bin - mkdir bin + rm -rif $(OUTPUT_DIR) + mkdir $(OUTPUT_DIR) init: @echo building $(APP_NAME) $(APP_VERSION) @@ -156,8 +162,8 @@ update-vfs: config: init update-vfs update-generated-file @echo "update configs" @# $(GO) env - @mkdir -p bin - @cp $(APP_CONFIG) bin/$(APP_CONFIG) + @mkdir -p $(OUTPUT_DIR) + @cp $(APP_CONFIG) $(OUTPUT_DIR)/$(APP_CONFIG) dist: cross-build package @@ -168,35 +174,35 @@ dist-all-platform: all-platform package-all-platform package: @echo "Packaging" - cd bin && tar cfz ../bin/darwin64.tar.gz darwin64 $(APP_CONFIG) - cd bin && tar cfz ../bin/linux64.tar.gz linux64 $(APP_CONFIG) - cd bin && tar cfz ../bin/windows64.tar.gz windows64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/darwin64.tar.gz darwin64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux64.tar.gz linux64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/windows64.tar.gz windows64 $(APP_CONFIG) package-all-platform: package-darwin-platform package-linux-platform package-windows-platform @echo "Packaging all" - cd bin && tar cfz ../bin/freebsd64.tar.gz $(APP_NAME)-freebsd64 $(APP_CONFIG) - cd bin && tar cfz ../bin/freebsd32.tar.gz $(APP_NAME)-freebsd32 $(APP_CONFIG) - cd bin && tar cfz ../bin/netbsd64.tar.gz $(APP_NAME)-netbsd64 $(APP_CONFIG) - cd bin && tar cfz ../bin/netbsd32.tar.gz $(APP_NAME)-netbsd32 $(APP_CONFIG) - cd bin && tar cfz ../bin/openbsd64.tar.gz $(APP_NAME)-openbsd64 $(APP_CONFIG) - cd bin && tar cfz ../bin/openbsd32.tar.gz $(APP_NAME)-openbsd32 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/freebsd64.tar.gz $(APP_NAME)-freebsd64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/freebsd32.tar.gz $(APP_NAME)-freebsd32 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/netbsd64.tar.gz $(APP_NAME)-netbsd64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/netbsd32.tar.gz $(APP_NAME)-netbsd32 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/openbsd64.tar.gz $(APP_NAME)-openbsd64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/openbsd32.tar.gz $(APP_NAME)-openbsd32 $(APP_CONFIG) package-darwin-platform: @echo "Packaging Darwin" - cd bin && tar cfz ../bin/darwin64.tar.gz $(APP_NAME)-darwin64 $(APP_CONFIG) - #cd bin && tar cfz ../bin/darwin32.tar.gz $(APP_NAME)-darwin32 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/darwin64.tar.gz $(APP_NAME)-darwin64 $(APP_CONFIG) + #cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/darwin32.tar.gz $(APP_NAME)-darwin32 $(APP_CONFIG) package-linux-platform: @echo "Packaging Linux" - cd bin && tar cfz ../bin/linux64.tar.gz $(APP_NAME)-linux64 $(APP_CONFIG) - cd bin && tar cfz ../bin/linux32.tar.gz $(APP_NAME)-linux32 $(APP_CONFIG) - cd bin && tar cfz ../bin/armv5.tar.gz $(APP_NAME)-armv5 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux64.tar.gz $(APP_NAME)-linux64 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux32.tar.gz $(APP_NAME)-linux32 $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/armv5.tar.gz $(APP_NAME)-armv5 $(APP_CONFIG) package-windows-platform: @echo "Packaging Windows" - cd bin && tar cfz ../bin/windows64.tar.gz $(APP_NAME)-windows64.exe $(APP_CONFIG) - cd bin && tar cfz ../bin/windows32.tar.gz $(APP_NAME)-windows32.exe $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/windows64.tar.gz $(APP_NAME)-windows64.exe $(APP_CONFIG) + cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/windows32.tar.gz $(APP_NAME)-windows32.exe $(APP_CONFIG) test: go get -u github.com/kardianos/govendor diff --git a/web/config/router.config.js b/web/config/router.config.js index 2f5500a3..77b0330e 100644 --- a/web/config/router.config.js +++ b/web/config/router.config.js @@ -26,13 +26,13 @@ export default [ component: './Dashboard/Analysis', routes: [ { - path: '/list/table-list', + path: '/platform/gateway', name: 'gateway', - component: './List/TableList', + component: './Dashboard/Analysis', }, { - path: '/list/table-list', + path: '/platform/cluster', name: 'cluster', - component: './List/TableList', + component: './Dashboard/Monitor', }, { path: '/list/table-list', name: 'tasks', @@ -117,28 +117,27 @@ export default [ path: '/search', name: 'search', icon: 'search', - component: './Logs/Overview', routes: [ { - path: '/list/table-list', + path: '/search/template', name: 'template', - component: './List/TableList', + component: './SearchManage/SearchTemplate', }, { - path: '/list/table-list', + path: '/search/alias', name: 'alias', - component: './List/TableList', + component: './SearchManage/AliasManage', }, { - path: '/list/table-list', + path: '/search/dict', name: 'dict', - component: './List/TableList', + component: './SearchManage/DictManage', }, { - path: '/list/table-list', + path: '/search/analyzer', name: 'analyzer', - component: './List/TableList', + component: './SearchManage/AnalyzerManage', }, { - path: '/list/table-list', + path: '/search/nlp', name: 'nlp', - component: './List/TableList', + component: './SearchManage/NLPManage', }, ] }, diff --git a/web/docker/entrypoint-build.sh b/web/docker/entrypoint-build.sh old mode 100644 new mode 100755 diff --git a/web/docker/entrypoint-dev.sh b/web/docker/entrypoint-dev.sh old mode 100644 new mode 100755 diff --git a/web/docker/entrypoint.sh b/web/docker/entrypoint.sh old mode 100644 new mode 100755 diff --git a/web/src/pages/SearchManage/AliasManage.js b/web/src/pages/SearchManage/AliasManage.js new file mode 100644 index 00000000..609e37fc --- /dev/null +++ b/web/src/pages/SearchManage/AliasManage.js @@ -0,0 +1,651 @@ +import React, { PureComponent, Fragment } from 'react'; +import { connect } from 'dva'; +import moment from 'moment'; +import { + Row, + Col, + Card, + Form, + Input, + Select, + Icon, + Button, + Dropdown, + Menu, + InputNumber, + DatePicker, + Modal, + message, + Badge, + Divider, + Steps, + Radio, +} from 'antd'; +import StandardTable from '@/components/StandardTable'; +import PageHeaderWrapper from '@/components/PageHeaderWrapper'; + +import styles from './AliasManage.less'; + +const FormItem = Form.Item; +const { Step } = Steps; +const { TextArea } = Input; +const { Option } = Select; +const RadioGroup = Radio.Group; +const getValue = obj => + Object.keys(obj) + .map(key => obj[key]) + .join(','); +const statusMap = ['default', 'processing', 'success', 'error']; +const status = ['关闭', '运行中', '已上线', '异常']; +const CreateForm = Form.create()(props => { + const { modalVisible, form, handleAdd, handleModalVisible } = props; + const okHandle = () => { + form.validateFields((err, fieldsValue) => { + if (err) return; + form.resetFields(); + handleAdd(fieldsValue); + }); + }; + return ( + handleModalVisible()} +> + + {form.getFieldDecorator('desc', { + rules: [{ required: true, message: '请输入至少五个字符的规则描述!', min: 5 }], + })()} + + +); +}); + +@Form.create() +class UpdateForm extends PureComponent { + constructor(props) { + super(props); + + this.state = { + formVals: { + name: props.values.name, + desc: props.values.desc, + key: props.values.key, + target: '0', + template: '0', + type: '1', + time: '', + frequency: 'month', + }, + currentStep: 0, + }; + + this.formLayout = { + labelCol: { span: 7 }, + wrapperCol: { span: 13 }, + }; + } + + handleNext = currentStep => { + const { form, handleUpdate } = this.props; + const { formVals: oldValue } = this.state; + form.validateFields((err, fieldsValue) => { + if (err) return; + const formVals = { ...oldValue, ...fieldsValue }; + this.setState( + { + formVals, + }, + () => { + if (currentStep < 2) { + this.forward(); + } else { + handleUpdate(formVals); + } + } + ); + }); + }; + + backward = () => { + const { currentStep } = this.state; + this.setState({ + currentStep: currentStep - 1, + }); + }; + + forward = () => { + const { currentStep } = this.state; + this.setState({ + currentStep: currentStep + 1, + }); + }; + + renderContent = (currentStep, formVals) => { + const { form } = this.props; + if (currentStep === 1) { + return [ + + {form.getFieldDecorator('target', { + initialValue: formVals.target, + })( + + )} + , + + {form.getFieldDecorator('template', { + initialValue: formVals.template, + })( + + )} + , + + {form.getFieldDecorator('type', { + initialValue: formVals.type, + })( + + + + + )} + , + ]; + } + if (currentStep === 2) { + return [ + + {form.getFieldDecorator('time', { + rules: [{ required: true, message: '请选择开始时间!' }], + })( + + )} + , + + {form.getFieldDecorator('frequency', { + initialValue: formVals.frequency, + })( + + )} + , + ]; + } + return [ + + {form.getFieldDecorator('name', { + rules: [{ required: true, message: '请输入别名!' }], + initialValue: formVals.name, + })()} + , + + {form.getFieldDecorator('desc', { + rules: [{ required: true, message: '请输入至少五个字符的描述!', min: 5 }], + initialValue: formVals.desc, + })(