├── common ├── __init__.py ├── json_util.py ├── string_util.py ├── datatable_result.py ├── xa_result.py └── page.py ├── models ├── __init__.py ├── job_increment_param_record.py ├── job_instance.py └── job_define.py ├── .gitignore ├── static └── assets │ ├── images │ ├── avatars │ │ ├── user.jpg │ │ ├── avatar.png │ │ ├── avatar1.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar4.png │ │ ├── avatar5.png │ │ └── profile-pic.jpg │ ├── email │ │ ├── email1.png │ │ ├── email2.png │ │ ├── email3.png │ │ └── email4.png │ ├── gallery │ │ ├── image-1.jpg │ │ ├── image-2.jpg │ │ ├── image-3.jpg │ │ ├── image-4.jpg │ │ ├── image-5.jpg │ │ ├── image-6.jpg │ │ ├── thumb-1.jpg │ │ ├── thumb-2.jpg │ │ ├── thumb-3.jpg │ │ ├── thumb-4.jpg │ │ ├── thumb-5.jpg │ │ └── thumb-6.jpg │ ├── placeholder │ │ ├── 165x90.png │ │ ├── 255x150.png │ │ ├── 530x270.png │ │ └── 550x280.png │ ├── bootstrap-colorpicker │ │ ├── alpha.png │ │ ├── hue.png │ │ ├── saturation.png │ │ ├── hue-horizontal.png │ │ └── alpha-horizontal.png │ ├── gritter.png.html │ ├── ie-spacer.gif.html │ └── gritter-light.png.html │ ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular-.eot │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ ├── font-awesome │ └── 4.5.0 │ │ └── fonts │ │ ├── fontawesome-webfont-.eot │ │ ├── fontawesome-webfont-v=4.5.0.eot │ │ ├── fontawesome-webfont-v=4.5.0.ttf │ │ ├── fontawesome-webfont-v=4.5.0.woff │ │ └── fontawesome-webfont-v=4.5.0.woff2 │ ├── img │ ├── clear.png.html │ └── loading.gif.html │ ├── css │ ├── chosen-sprite.png.html │ ├── images │ │ ├── border.png.html │ │ ├── loading.gif.html │ │ ├── overlay.png.html │ │ ├── pattern.jpg.html │ │ ├── controls.png.html │ │ ├── meteorshower2.jpg.html │ │ └── loading_background.png.html │ ├── chosen-sprite@2x.png.html │ ├── prettify.min.css │ ├── fonts.googleapis.com.css │ ├── bootstrap-multiselect.min.css │ ├── bootstrap-duallistbox.min.css │ ├── jquery.jsonview.css │ ├── jquery.gritter.min.css │ ├── jquery-ui.custom.min.css │ ├── bootstrap-timepicker.min.css │ ├── colorbox.min.css │ ├── bootstrap-colorpicker.min.css │ ├── daterangepicker.min.css │ ├── bootstrap-datetimepicker.min.css │ └── dropzone.min.css │ └── js │ ├── jquery.ui.touch-punch.min.js │ ├── buttons.print.min.js │ ├── jquery.hotkeys.index.min.js │ ├── jquery.flot.resize.min.js │ ├── buttons.colVis.min.js │ ├── autosize.min.js │ ├── bootstrap-wysiwyg.min.js │ ├── jquery.dataTables.bootstrap.min.js │ ├── grid.locale-en.js │ ├── jquery.easypiechart.min.js │ ├── jquery.maskedinput.min.js │ ├── jquery.gritter.min.js │ ├── jquery.inputlimiter.min.js │ ├── bootstrap-tag.min.js │ ├── spin.js │ ├── ace-extra.min.js │ ├── util.js │ ├── spinbox.min.js │ ├── wizard.min.js │ ├── ace-editable.min.js │ ├── jquery.nestable.min.js │ ├── main.js │ └── tree.min.js ├── controller ├── index_controller.py ├── test.py ├── __init__.py ├── job_increment_param_record_controller.py ├── job_instance_controller.py ├── job_task_load.py └── job_define_controller.py ├── templates ├── index.html ├── job_define_json_view.html ├── job_instance_output_view.html ├── job_instance_json_view.html ├── job_increment_param_record.html ├── job_define_edit_modal.html ├── layout.html └── job_instance.html ├── run.py ├── config.py ├── app └── __init__.py └── README.md /common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | 3 | # Log file 4 | *.log 5 | 6 | *.pyc 7 | 8 | .idea/ 9 | -------------------------------------------------------------------------------- /static/assets/images/avatars/user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/user.jpg -------------------------------------------------------------------------------- /static/assets/images/email/email1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/email/email1.png -------------------------------------------------------------------------------- /static/assets/images/email/email2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/email/email2.png -------------------------------------------------------------------------------- /static/assets/images/email/email3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/email/email3.png -------------------------------------------------------------------------------- /static/assets/images/email/email4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/email/email4.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar1.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar2.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar3.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar4.png -------------------------------------------------------------------------------- /static/assets/images/avatars/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/avatar5.png -------------------------------------------------------------------------------- /static/assets/images/gallery/image-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-1.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/image-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-2.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/image-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-3.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/image-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-4.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/image-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-5.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/image-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/image-6.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-1.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-2.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-3.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-4.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-5.jpg -------------------------------------------------------------------------------- /static/assets/images/gallery/thumb-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/gallery/thumb-6.jpg -------------------------------------------------------------------------------- /static/assets/images/avatars/profile-pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/avatars/profile-pic.jpg -------------------------------------------------------------------------------- /static/assets/images/placeholder/165x90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/placeholder/165x90.png -------------------------------------------------------------------------------- /static/assets/images/placeholder/255x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/placeholder/255x150.png -------------------------------------------------------------------------------- /static/assets/images/placeholder/530x270.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/placeholder/530x270.png -------------------------------------------------------------------------------- /static/assets/images/placeholder/550x280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/placeholder/550x280.png -------------------------------------------------------------------------------- /static/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/assets/images/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /static/assets/images/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /static/assets/fonts/glyphicons-halflings-regular-.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/fonts/glyphicons-halflings-regular-.eot -------------------------------------------------------------------------------- /static/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/assets/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /static/assets/images/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /static/assets/images/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-.eot -------------------------------------------------------------------------------- /static/assets/images/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/images/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.eot -------------------------------------------------------------------------------- /static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.ttf -------------------------------------------------------------------------------- /static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.woff -------------------------------------------------------------------------------- /static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luoce/bt-ware-datasync-datax/HEAD/static/assets/font-awesome/4.5.0/fonts/fontawesome-webfont-v=4.5.0.woff2 -------------------------------------------------------------------------------- /controller/index_controller.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | 3 | from app import app 4 | from flask import render_template 5 | 6 | 7 | @app.route('/', methods=['GET']) 8 | @app.route('/index', methods=['GET']) 9 | def index(): 10 | return render_template('index.html') 11 | 12 | -------------------------------------------------------------------------------- /common/json_util.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import json 5 | 6 | 7 | class JsonUtil(object): 8 | 9 | @staticmethod 10 | def is_json(jsonStr): 11 | try: 12 | json.loads(jsonStr) 13 | except ValueError: 14 | return False 15 | return True 16 | 17 | -------------------------------------------------------------------------------- /common/string_util.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | class StringUtil(object): 5 | @staticmethod 6 | def isNotBlank(s): 7 | if s.strip() == '': 8 | return False 9 | return True 10 | 11 | @staticmethod 12 | def isBlank(s): 13 | return not StringUtil.isNotBlank(s) 14 | 15 | -------------------------------------------------------------------------------- /static/assets/img/clear.png.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |The requested URL /assets/img/clear.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/img/loading.gif.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/img/loading.gif was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/images/gritter.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/images/gritter.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/chosen-sprite.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/chosen-sprite.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/border.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/border.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/loading.gif.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/loading.gif was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/overlay.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/overlay.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/pattern.jpg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/pattern.jpg was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/images/ie-spacer.gif.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/images/ie-spacer.gif was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/chosen-sprite@2x.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/chosen-sprite@2x.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/controls.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/controls.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/images/gritter-light.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/images/gritter-light.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/meteorshower2.jpg.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/meteorshower2.jpg was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /static/assets/css/images/loading_background.png.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |The requested URL /assets/css/images/loading_background.png was not found on this server.
9 | 10 | -------------------------------------------------------------------------------- /controller/test.py: -------------------------------------------------------------------------------- 1 | import commands 2 | import croniter 3 | 4 | 5 | # (status, output) = commands.getstatusoutput('/Users/huan/software/datax/bin/datax.py /Users/huan/software/datax/job/94853791-f6ce-11e8-8271-4a0001c796d0.json') 6 | # 7 | # print status 8 | # 9 | # print output 10 | from apscheduler.triggers.cron import CronTrigger 11 | 12 | cron = CronTrigger.from_crontab(' */5 * * * *') 13 | print cron 14 | print type(cron) -------------------------------------------------------------------------------- /common/datatable_result.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from flask import jsonify 5 | 6 | 7 | success_res = dict() 8 | error_res = dict() 9 | 10 | 11 | class DataTableResult(object): 12 | @staticmethod 13 | def format(data=None): 14 | success_res['aaData'] = data['items'] 15 | success_res['iTotalRecords'] = data['total'] 16 | success_res['iTotalDisplayRecords'] = data['total'] 17 | return jsonify(success_res) 18 | -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block title %}控制台{% endblock %} 4 | 5 | {% block main_content %} 6 | 7 |