diff --git a/__init__.py b/__init__.py new file mode 100644 index 00000000..50ed18aa --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ +# -*-coding:utf-8-*- diff --git a/jikimo_model_viewer/__init__.py b/jikimo_model_viewer/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/jikimo_model_viewer/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/jikimo_model_viewer/__manifest__.py b/jikimo_model_viewer/__manifest__.py new file mode 100644 index 00000000..b91c7b2b --- /dev/null +++ b/jikimo_model_viewer/__manifest__.py @@ -0,0 +1,22 @@ +{ + "name": "Jikimo 3D模型展示模块", + "summary": "Jikimo 3D模型展示模块。", + "description": "Jikimo 3D模型展示模块(限odoo16)", + "author": "Van", + "website": "https://jikimo.com", + "category": "Tutorials", + "version": "16.0.0.1", + "depends": ['web','sale','sale_management'], + "demo": [], + "data": [ + 'views/views.xml', #这是为了测试的效果,可以删除 + ], + 'assets': { + 'web.assets_qweb': [ + 'jikimo_model_viewer/static/src/js/3d_viewer.xml', + ], + 'web.assets_backend': [ + 'jikimo_model_viewer/static/src/js/*', + ], + } +} \ No newline at end of file diff --git a/owl_demo/models/__init__.py b/jikimo_model_viewer/models/__init__.py similarity index 100% rename from owl_demo/models/__init__.py rename to jikimo_model_viewer/models/__init__.py diff --git a/owl_demo/models/sale_order.py b/jikimo_model_viewer/models/sale_order.py similarity index 100% rename from owl_demo/models/sale_order.py rename to jikimo_model_viewer/models/sale_order.py diff --git a/jikimo_model_viewer/readme.md b/jikimo_model_viewer/readme.md new file mode 100644 index 00000000..ba98626a --- /dev/null +++ b/jikimo_model_viewer/readme.md @@ -0,0 +1,25 @@ +# 演示DEMO +## 先给销售订单添加一个Binary字段 + + class SaleOrder(models.Model): + _inherit = "sale.order" + + step_file = fields.Binary("Step File") + +## 然后在销售订单详情的表单视中增加一个带有widget的标签 + + + sale.order.form.inherit + sale.order + + + + + + + + + + + ## 然后就可以到销售订单页面上查看效果 +![img.png](static/src/images/img.png) \ No newline at end of file diff --git a/jikimo_model_viewer/static/src/images/img.png b/jikimo_model_viewer/static/src/images/img.png new file mode 100644 index 00000000..54080e49 Binary files /dev/null and b/jikimo_model_viewer/static/src/images/img.png differ diff --git a/jikimo_model_viewer/static/src/js/3d_viewer.js b/jikimo_model_viewer/static/src/js/3d_viewer.js new file mode 100644 index 00000000..f3eb56cf --- /dev/null +++ b/jikimo_model_viewer/static/src/js/3d_viewer.js @@ -0,0 +1,62 @@ +/** @odoo-module **/ + +import { registry } from "@web/core/registry";//注册 +import { _lt } from "@web/core/l10n/translation";//翻译 +import { standardFieldProps } from "@web/views/fields/standard_field_props"; +import { useInputField } from "@web/views/fields/input_field_hook"; +import { FileUploader } from "@web/views/fields/file_handler"; +import { session } from "@web/session";//登录会话 +import { useService } from "@web/core/utils/hooks"; +import { isBinarySize } from "@web/core/utils/binary"; +import { download } from "@web/core/network/download"; +import utils from 'web.utils'; + +import core from 'web.core'; +import rpc from 'web.rpc'; + +var QWeb = core.qweb; + +import { Component, onWillUpdateProps, useState, useRef, useEffect } from "@odoo/owl"; + +export class StepViewer extends Component { + setup() { + this.props.url = this.formatUrl(); + } + + formatUrl(){ + var url = ''; + if (this.props.value) { + if (utils.is_bin_size(this.props.value)) { + var url_props = { + base_url: session['web.base.url'], + model: this.props.record.resModel, + id: JSON.stringify(this.props.record.data['id']), + field: this.props.name} + url = url_props['base_url']+'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true' + + } else { + url = "data:model/gltf-binary;base64," + this.props.value; + } + } + return url + } + +} + +StepViewer.template = "jikimo_model_viewer.BinaryField3d"; + +StepViewer.displayName = _lt("3D File"); +StepViewer.supportedTypes = ["binary"]; + +StepViewer.props = { + ...standardFieldProps, + url: { type: String, optional: true }, +}; + +StepViewer.extractProps = ({ attrs }) => { + return { + url: attrs.options.url, + }; +}; + +registry.category("fields").add("Viewer3D", StepViewer); diff --git a/jikimo_model_viewer/static/src/js/3d_viewer.xml b/jikimo_model_viewer/static/src/js/3d_viewer.xml new file mode 100644 index 00000000..8a64338f --- /dev/null +++ b/jikimo_model_viewer/static/src/js/3d_viewer.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jikimo_model_viewer/static/src/js/test.glb b/jikimo_model_viewer/static/src/js/test.glb new file mode 100644 index 00000000..c4a6352b Binary files /dev/null and b/jikimo_model_viewer/static/src/js/test.glb differ diff --git a/jikimo_model_viewer/views/views.xml b/jikimo_model_viewer/views/views.xml new file mode 100644 index 00000000..2baada6e --- /dev/null +++ b/jikimo_model_viewer/views/views.xml @@ -0,0 +1,19 @@ + + + + sale.order.form.inherit + sale.order + + + + + + + + + + + + + + \ No newline at end of file diff --git a/owl_demo/__init__.py b/owl_demo/__init__.py index f7209b17..e046e49f 100644 --- a/owl_demo/__init__.py +++ b/owl_demo/__init__.py @@ -1,2 +1 @@ -from . import models from . import controllers diff --git a/owl_demo/__manifest__.py b/owl_demo/__manifest__.py index 93565bfa..8011e065 100644 --- a/owl_demo/__manifest__.py +++ b/owl_demo/__manifest__.py @@ -6,7 +6,7 @@ "website": "https://topodoo.com", "category": "Tutorials", "version": "15.0.0.1", - "depends": ["sale", "sale_management"], + "depends": ["sale", "sale_management","web_widget_model_viewer"], "demo": [], "data": [ #'report/test_sale_report.xml', diff --git a/owl_demo/views/views.xml b/owl_demo/views/views.xml deleted file mode 100644 index b558e85b..00000000 --- a/owl_demo/views/views.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - sale.order.form.inherit - sale.order - - - - - - - - - - - - - sale.order.tree.inherit - sale.order - - - - CTemplate - {'template':'owl_demo.field_partner_id'} - - - - - - - - - \ No newline at end of file