Files
test/web_widget_model_viewer/static/src/js/3d_viewer.js

80 lines
2.7 KiB
JavaScript

/** @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 {session} from "@web/session";
// import core from 'web.core';
// var QWeb = core.qweb;
import {Component, onPatched} from "@odoo/owl";
export class StepViewer extends Component {
setup() {
this.props.url = this.formatUrl();
onPatched(() => {
this.props.url = this.formatUrl();
const dom = $(this.__owl__.bdom.parentEl).children('model-viewer')
if(dom && dom.length) {
dom.attr('src', this.formatUrl())
}
})
}
formatUrl() {
var url = '';
if (this.props.value) {
if (this.props.value.slice(-1) == 'b' && !isNaN(this.props.value.split(' ')[0])) {
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'].replace('http://', 'https://') + '/web/content/' + url_props['model'] + '/' + url_props['id'] + '/' + url_props['field'] + '?download=true';
// url = 'http://localhost:8069'+'/web/content/'+url_props['model']+'/'+url_props['id']+'/'+url_props['field']+'?download=true'
// console.log('url111111', url)
return url;
} else {
url = "data:model/gltf-binary;base64," + this.props.value;
// console.log('url2', url)
return url;
// localStorage.setItem('url',url)
// let new_url = localStorage.getItem(('url'))
// var oViewer = document.getElementsByTagName('model-viewer')[0];
// return new_url
// url = "web_widget_model_viewer/static/src/images/not_model.png";
}
} else {
// var oImg = document.getElementsByClassName('test')[0]
// console.log(oImg)
}
}
}
StepViewer.template = "web_widget_model_viewer.BinaryField3d";
StepViewer.displayName = _lt("3D File");
StepViewer.supportedTypes = ["binary"];
StepViewer.props = {
...standardFieldProps,
url: {type: String, optional: true},
isInList: {type: Boolean, optional: true},
};
StepViewer.extractProps = ({attrs}) => {
const modifiedAttrs = JSON.parse(attrs.modifiers || '{}');
return {
url: attrs.options.url,
isInList: modifiedAttrs.isInList,
};
};
registry.category("fields").add("Viewer3D", StepViewer);