diff --git a/__manifest__.py b/__manifest__.py index 2097420890306516a1f89d83d59491529eb14cef..5b101fd91094c5e787ad8f98c689dab66f9cbb8d 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- { 'name': 'Library pyecharts', - 'version': '12.0.0.1', + 'version': '15.0.0.1', 'description': '', 'author': 'huaqiangyan@163.com', 'depends': ['web'], @@ -27,6 +27,13 @@ 'library_pyecharts/static/src/js/theme_infographic.js', 'library_pyecharts/static/src/js/theme_roma.js', 'library_pyecharts/static/src/js/theme_shine.js', + 'library_pyecharts/static/src/js/bar_render.js', + 'library_pyecharts/static/src/js/view_bar.js', + 'library_pyecharts/static/src/js/pie_render.js', + 'library_pyecharts/static/src/js/view_pie.js', + + # 'library_pyecharts/static/src/js/**/*', + # 'library_pyecharts/static/src/css/**/*', ], 'web.assets_qweb': [ 'library_pyecharts/static/src/xml/**/*', diff --git a/controllers/echarts.py b/controllers/echarts.py index c56f670b9718c16225b15e95eaf7c4fc42d5be65..396916f01b2d5a0dd3c0236c0f2f056d1a5394af 100755 --- a/controllers/echarts.py +++ b/controllers/echarts.py @@ -26,7 +26,7 @@ class Demo(http.Controller): class PyEcharts(http.Controller): @http.route('/pyecharts', auth='public', type='http', cors='*', methods=['POST', 'GET'], csrf=False) - def pyecharts(self): + def pyecharts(self, model=None, etype=None): """ { 'column': 2 / 1, @@ -66,13 +66,8 @@ class PyEcharts(http.Controller): 'content': notice.content, 'ntype': notice.ntype, }) + dashboard_dict['echarts_data'] = _get_chart(label=etype) return json.dumps(dashboard_dict) - # return json.dumps({ - # 'bar1': json.loads(bar1_base()), - # 'bar2': json.loads(bar2_base()), - # 'bar3': json.loads(bar3_base()), - # 'bar4': json.loads(bar4_base()), - # }) def _get_chart(label=None): diff --git a/models/__init__.py b/models/__init__.py index 820f9f3b36b020eb74802c224050e93cc613f9a4..748cdaeac8ef77750021957be94fc2f23eeecba4 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,3 +1,4 @@ from . import echarts_type from . import dashboard from . import notice +from . import view_type diff --git a/models/view_type.py b/models/view_type.py new file mode 100644 index 0000000000000000000000000000000000000000..2cb42b80c2680b6e231fa8c956f5defd2b25f0da --- /dev/null +++ b/models/view_type.py @@ -0,0 +1,13 @@ +from odoo import fields, models, api, _ + + +class View(models.Model): + _inherit = 'ir.ui.view' + + type = fields.Selection(selection_add=[('bar', 'Bar'), ('pie', 'Pie')]) + + +class ActWindowView(models.Model): + _inherit = 'ir.actions.act_window.view' + + view_mode = fields.Selection(selection_add=[('bar', "Bar"), ('pie', 'Pie')], ondelete={'bar': 'cascade', 'pie': 'cascade'}) diff --git a/static/img/21111200.jpg b/static/img/21111200.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f09dcd98ef290365a21aa3e81b8b2500cc91d3a Binary files /dev/null and b/static/img/21111200.jpg differ diff --git a/static/img/21111201.jpg b/static/img/21111201.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a23636afc7cbe2090c250dc1bd15a19617c1d63 Binary files /dev/null and b/static/img/21111201.jpg differ diff --git a/static/src/js/bar_render.js b/static/src/js/bar_render.js new file mode 100755 index 0000000000000000000000000000000000000000..ca06951a468a79872c8aad91a4b011d8db30a832 --- /dev/null +++ b/static/src/js/bar_render.js @@ -0,0 +1,46 @@ +odoo.define('library_pyecharts.BarRenderer', function (require) { + 'use strict'; + + var AbstractRenderer = require('web.AbstractRenderer'); + + + return AbstractRenderer.extend({ + + + template: 'BarTemplate', + + + _consoleBtn: function() { + console.log(this.state.model); + + }, + + init: function(parent, data){ + return this._super.apply(this, arguments); + }, + + start: function(){ + this._consoleBtn(); + var model = this.state.model; + $(document).ready(function() { + $.ajax({ + type: "GET", + url: "/pyecharts", + data: {model: model, etype: "Bar"}, + dataType: 'json', + success: function (result) { + var echartsData = result.echarts_data; + var bar = document.getElementById("bar"); + var chart = echarts.init(bar, 'shine', {renderer: 'canvas'}); + chart.setOption(echartsData); + }, + error: function (request) { + console.log("error") + }, + }); + }); + return true; + }, + }); + +}); diff --git a/static/src/js/pie_render.js b/static/src/js/pie_render.js new file mode 100755 index 0000000000000000000000000000000000000000..11fd9aabf09bafd630556293450e257844cdfeaf --- /dev/null +++ b/static/src/js/pie_render.js @@ -0,0 +1,46 @@ +odoo.define('library_pyecharts.PieRenderer', function (require) { + 'use strict'; + + var AbstractRenderer = require('web.AbstractRenderer'); + + + return AbstractRenderer.extend({ + + + template: 'PieTemplate', + + + _consoleBtn: function() { + console.log(this.state.model); + + }, + + init: function(parent, data){ + return this._super.apply(this, arguments); + }, + + start: function(){ + this._consoleBtn(); + var model = this.state.model; + $(document).ready(function() { + $.ajax({ + type: "GET", + url: "/pyecharts", + data: {model: model, etype: "Pie"}, + dataType: 'json', + success: function (result) { + var echartsData = result.echarts_data; + var pie = document.getElementById("pie"); + var chart = echarts.init(pie, 'shine', {renderer: 'canvas'}); + chart.setOption(echartsData); + }, + error: function (request) { + console.log("error") + }, + }); + }); + return true; + }, + }); + +}); diff --git a/static/src/js/view_bar.js b/static/src/js/view_bar.js new file mode 100755 index 0000000000000000000000000000000000000000..89a08a3ac7186957175bbaf22020829713114f65 --- /dev/null +++ b/static/src/js/view_bar.js @@ -0,0 +1,19 @@ +odoo.define('library_pyecharts.view_bar', function (require) { + "use strict"; + + var BasicView = require('web.BasicView'); + var BarRenderer = require('library_pyecharts.BarRenderer'); + + var viewRegistry = require('web.view_registry'); + + var BarView = BasicView.extend({ + display_name: 'Bar View', + icon: 'fa-video-camera', + config: _.extend({}, BasicView.prototype.config, { + Renderer: BarRenderer, + }), + viewType: 'bar', + }); + viewRegistry.add('bar', BarView); + return BarView +}); diff --git a/static/src/js/view_pie.js b/static/src/js/view_pie.js new file mode 100755 index 0000000000000000000000000000000000000000..aeca9c9b22756705186fc5cf1e3ff9a239e180ec --- /dev/null +++ b/static/src/js/view_pie.js @@ -0,0 +1,19 @@ +odoo.define('library_pyecharts.view_pie', function (require) { + "use strict"; + + var BasicView = require('web.BasicView'); + var PieRenderer = require('library_pyecharts.PieRenderer'); + + var viewRegistry = require('web.view_registry'); + + var PieView = BasicView.extend({ + display_name: 'Pie View', + icon: 'fa-video-camera', + config: _.extend({}, BasicView.prototype.config, { + Renderer: PieRenderer, + }), + viewType: 'pie', + }); + viewRegistry.add('pie', PieView); + return PieView +}); diff --git a/static/src/xml/bar_template.xml b/static/src/xml/bar_template.xml new file mode 100755 index 0000000000000000000000000000000000000000..3c86cd3971d36f1c57ad7883bc7c900c614f45e5 --- /dev/null +++ b/static/src/xml/bar_template.xml @@ -0,0 +1,9 @@ + + + +
+
+
+
+
+
diff --git a/static/src/xml/pie_template.xml b/static/src/xml/pie_template.xml new file mode 100755 index 0000000000000000000000000000000000000000..0cd770f3c391bf4f4d60e7a1e3652f602c236e50 --- /dev/null +++ b/static/src/xml/pie_template.xml @@ -0,0 +1,9 @@ + + + +
+
+
+
+
+
diff --git a/views/echarts_notice_view.xml b/views/echarts_notice_view.xml index e3fe65c4e30a0bab955030ef1b02f146b96902c3..2babafda6ad4da396330bbc379f6eb80a0e2af98 100644 --- a/views/echarts_notice_view.xml +++ b/views/echarts_notice_view.xml @@ -32,10 +32,30 @@ + + Notice Bar + echarts.notice + + + + + + + + + Notice Pie + echarts.notice + + + + + + + Echarts Notice echarts.notice - tree,form + tree,form,bar,pie

Create Echarts Notice