ScreenDesigner
This commit is contained in:
parent
285777451a
commit
5a181ae12d
|
|
@ -45,6 +45,7 @@
|
|||
'views/dss_zahlungen.xml',
|
||||
'views/dss_web_contracts.xml',
|
||||
'views/dss_invoices.xml',
|
||||
'views/dss_m2mmail.xml',
|
||||
'views/mainsystem_view.xml',
|
||||
'views/dss_importinvoicelist.xml',
|
||||
'views/menu.xml',
|
||||
|
|
@ -62,11 +63,19 @@
|
|||
'web.assets_backend': [
|
||||
'DigitalSignage/static/src/img/*',
|
||||
'DigitalSignage/static/src/xml/screenDesignerView.xml',
|
||||
'DigitalSignage/static/src/xml/dss_screenview_controller.xml',
|
||||
'DigitalSignage/static/src/xml/dss_screenview_renderer.xml',
|
||||
'DigitalSignage/static/src/js/dss_screenview_archparser.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_controller.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_renderer.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_register.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_model.js',
|
||||
'DigitalSignage/static/src/js/form_label.js',
|
||||
'DigitalSignage/static/src/js/form_button.js',
|
||||
'DigitalSignage/static/src/js/kanban_button.js',
|
||||
'DigitalSignage/static/src/xml/form_button.xml',
|
||||
'DigitalSignage/static/src/js/dss_klistmanager.js',
|
||||
'DigitalSignage/static/src/js/screenDesignerViewReload.js',
|
||||
'DigitalSignage/static/src/xml/form_label.xml',
|
||||
],
|
||||
'web.assets_common': [
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import main
|
||||
from . import dss_screendesigner_controller
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,32 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import http
|
||||
import os
|
||||
import os.path
|
||||
import base64
|
||||
|
||||
import logging
|
||||
from odoo.http import request
|
||||
_logger = logging.getLogger(__name__)
|
||||
from odoo.tools.json import scriptsafe
|
||||
|
||||
class screendesignercontroller(http.Controller):
|
||||
@http.route('/dss/displaydesigner/', auth='user', website=True, csrf=False)
|
||||
def changeScreenTemplateView(self):
|
||||
|
||||
request.env.ref('DigitalSignage.dss_screenDesigner_action_dss_screenDesigner').run()
|
||||
|
||||
|
||||
# odss_sales_order = http.request.env['sale.orders']
|
||||
# new_so = odss_sales_order.create({
|
||||
# 'delivery_Time': delivery_time,
|
||||
# })
|
||||
|
||||
values = {
|
||||
'project_url': partner_url,
|
||||
'address': project.standort_strasse,
|
||||
'projects_data': scriptsafe.dumps(projects_data),
|
||||
'google_maps_api_key': google_maps_api_key,
|
||||
}
|
||||
|
||||
return
|
||||
|
|
@ -26,4 +26,5 @@ from . import company
|
|||
from . import dss_invoices
|
||||
from . import dss_importinvoicelist
|
||||
from . import dss_web_contracts
|
||||
from . import dss_m2mmail
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -331,3 +331,30 @@ class dssscreendesign(models.Model):
|
|||
def get_data(self):
|
||||
outlist = {'uuid' : 2222}
|
||||
return outlist
|
||||
|
||||
def myscreenrebuild(self):
|
||||
_logger.info('inside Screenrebuild')
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'name': 'reload',
|
||||
'context' : {'screenlayout': 1},
|
||||
'tag': 'dss_screenDesigner_js_action'
|
||||
}
|
||||
|
||||
|
||||
class View(models.Model):
|
||||
"""
|
||||
Extends the base 'ir.ui.view' model to include a new type of view
|
||||
called 'grid'.
|
||||
"""
|
||||
_inherit = 'ir.ui.view'
|
||||
type = fields.Selection(selection_add=[('screenview', "ScreenView")])
|
||||
|
||||
class IrActionsActWindowView(models.Model):
|
||||
"""
|
||||
Extends the base 'ir.actions.act_window.view' model to include
|
||||
a new view mode called 'grid'.
|
||||
"""
|
||||
_inherit = 'ir.actions.act_window.view'
|
||||
view_mode = fields.Selection(selection_add=[('screenview', "ScreenView")],
|
||||
ondelete={'screenview': 'cascade'})
|
||||
|
|
@ -48,7 +48,7 @@ class dssadvertisefields(models.Model):
|
|||
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||
templatefeldname = fields.Char('Template Feldname', required=True,tracking=True)
|
||||
display = fields.Char('Ziel Feldname',tracking=True)
|
||||
displaytemplate = fields.Many2one('dss.display.templates',String="Display Vorlage",tracking=True)
|
||||
displaytemplate = fields.Many2one('dss.display.templates',string="Display Vorlage",tracking=True)
|
||||
feldname = fields.Char('Ziel Feldname', required=True,tracking=True)
|
||||
color_used = fields.Char(string='Color Index',tracking=True)
|
||||
color_unused = fields.Char(string='Color Index',tracking=True)
|
||||
|
|
@ -106,3 +106,15 @@ class dssadvertisefields(models.Model):
|
|||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
@api.model
|
||||
def get_data(self,template):
|
||||
if not template:
|
||||
template = 1
|
||||
alldata = self.env['dss.advertisefields.templates'].search([('displaytemplate',"=",template)])
|
||||
outlist = []
|
||||
self.env["confirmation.wizard"].with_context(hide_cancel=True).confirm_no_action_message(message="Debug : "+str(len(alldata))+"/"+str(alldata),title="Notification")
|
||||
_logger.info("Screendesigner DataRequest : " + str(len(alldata))+"/"+str(alldata))
|
||||
for data in alldata:
|
||||
outlist.append({'uuid' : data.uuid,'pos_x':data.btn_pos_x,'pos_y':data.btn_pos_y,'pos_w':data.btn_pos_w,'pos_h':data.btn_pos_h,'feldname':data.feldname})
|
||||
return outlist
|
||||
|
|
|
|||
|
|
@ -776,7 +776,7 @@ class dsscontracts(models.Model):
|
|||
kampagnen=self.env['dss.ads'].search([('contract','=',self.id)])
|
||||
_logger.info('Prüfe Medien : C_'+str(self.id)+' alle Kamp : '+str(kampagnen))
|
||||
for kamp in kampagnen:
|
||||
_logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id))
|
||||
_logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' - P_'+str(kamp.parent_ad))
|
||||
if kamp:
|
||||
mediaids = []
|
||||
medias = self.env['dss.mediarelations'].search([('ad','=',kamp.id)])
|
||||
|
|
@ -859,8 +859,9 @@ class dsscontracts(models.Model):
|
|||
'target':'current',
|
||||
'context':'{"kampagne_id":'+str(kampagne.id)+',"show_project_update":True}',
|
||||
'context':'',
|
||||
'res_id':kampagne.id,
|
||||
'display_name' : 'Änderung zur Werbekampagne '+kampagne.parent_ad.adname,
|
||||
'res_id':self.ads_last_ad.id,
|
||||
#kampagne.id,
|
||||
# 'display_name' : 'Änderung zur Werbekampagne '+kampagne.parent_ad.adname,
|
||||
'domain':'[("id","=","context[kampagne_id]")]'
|
||||
}
|
||||
def setFirstKampagne(self):
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ class dssadvertisefields(models.Model):
|
|||
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||
displayname = fields.Char('Template Feldname', required=True,tracking=True)
|
||||
feldtemplates = fields.Many2many('dss.advertisefields.templates' , string='Vertrag', store=True,tracking=True)
|
||||
|
||||
fullsize_w = fields.Integer("Auflösung Breite",tracking=True)
|
||||
fullsize_h = fields.Integer("Auflösung Höhe",tracking=True)
|
||||
|
||||
def _default_create_date(self):
|
||||
return str(date.today())
|
||||
|
|
@ -59,3 +60,15 @@ class dssadvertisefields(models.Model):
|
|||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
@api.model
|
||||
def get_data(self):
|
||||
alldata = self.env['dss.display.templates'].search([])
|
||||
outlist = []
|
||||
self.env["confirmation.wizard"].with_context(hide_cancel=True).confirm_no_action_message(message="Debug : "+str(len(alldata))+"/"+str(alldata),title="Notification")
|
||||
_logger.info("Screendesigner Displaydata DataRequest : " + str(len(alldata))+"/"+str(alldata))
|
||||
a = 0
|
||||
for data in alldata:
|
||||
a += 1
|
||||
outlist.append({'uuid' : data.uuid,'displayname':data.displayname,'fullsizew':data.fullsize_w,'fullsizeh':data.fullsize_w,'nr':a})
|
||||
return outlist
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
from odoo import api, fields, models, _
|
||||
from odoo import tools
|
||||
|
||||
|
||||
class dssm2mvalues(models.Model):
|
||||
_name = "dss.m2mmail"
|
||||
_description = "DigitalSignage M2M Rückmeldungen"
|
||||
# _rec_name = "statusname"
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
|
@ -138,7 +138,7 @@ class dsstriggergroups(models.Model):
|
|||
def run_triggers(self, changes, Dataset, triggers):
|
||||
_logger.info("Trigger in run_triggers ! - start count :"+str(len(triggers)) )
|
||||
for trig in triggers:
|
||||
_logger.info("Trigger in run_triggers - Working on : "+str(trig.id))
|
||||
_logger.info("Trigger in run_triggers - Working on : "+str(trig.triggername)+'('+str(trig.id)+')')
|
||||
dochecktrigger = False
|
||||
|
||||
if (changes == False):
|
||||
|
|
|
|||
|
|
@ -168,8 +168,9 @@ class dsscontracts(models.Model):
|
|||
'contract_name': self.contract_name,
|
||||
'contract_state': self.env['dss.contractstate'].search([("statusname","=","Angelegt")]).id,
|
||||
'werbe_feld_selected': self.werbe_feld_selected,
|
||||
'client': self.client.id,
|
||||
'client': self.client,
|
||||
'client_short_vorname': self.client_short_vorname,
|
||||
'client_short_name': self.client_short_name,
|
||||
'client_short_email': self.client_short_email,
|
||||
'client_short_telefon': self.client_short_telefon,
|
||||
'client_short_mobil': self.client_short_mobil,
|
||||
|
|
|
|||
|
|
@ -45,3 +45,4 @@ DigitalSignage_dss_activity_mixin,access.dss.activity_mixin,DigitalSignage.model
|
|||
DigitalSignage_dss_triggermodel,access.dss.triggermodel,DigitalSignage.model_dss_triggermodel,base.group_user,1,0,0,0
|
||||
DigitalSignage_dss_invoices,access.dss.invoices,DigitalSignage.model_dss_invoices,base.group_user,1,1,1,1
|
||||
DigitalSignage_dss_onlinestate,access.dss.onlinestate,DigitalSignage.model_dss_onlinestate,base.group_user,1,1,1,1
|
||||
DigitalSignage_dss_m2mmail,access.dss.m2mmail,DigitalSignage.model_dss_m2mmail,base.group_user,1,1,1,1
|
||||
|
|
|
|||
|
|
|
@ -0,0 +1,60 @@
|
|||
/** @odoo-module */
|
||||
|
||||
import { XMLParser } from "@web/core/utils/xml";
|
||||
|
||||
export class ScreenViewArchParser extends XMLParser {
|
||||
parse(arch, fields = {}) {
|
||||
const archInfo = { fields, fieldAttrs: {}, groupBy: [] };
|
||||
this.visitXML(arch, (node) => {
|
||||
switch (node.tagName) {
|
||||
case "field": {
|
||||
alert('Field')
|
||||
const fieldName = node.getAttribute("name"); // exists (rng validation)
|
||||
if (fieldName === "id") {
|
||||
break;
|
||||
}
|
||||
const string = node.getAttribute("string");
|
||||
if (string) {
|
||||
if (!archInfo.fieldAttrs[fieldName]) {
|
||||
archInfo.fieldAttrs[fieldName] = {};
|
||||
}
|
||||
archInfo.fieldAttrs[fieldName].string = string;
|
||||
}
|
||||
const modifiers = JSON.parse(node.getAttribute("modifiers") || "{}");
|
||||
if (modifiers.invisible === true) {
|
||||
if (!archInfo.fieldAttrs[fieldName]) {
|
||||
archInfo.fieldAttrs[fieldName] = {};
|
||||
}
|
||||
archInfo.fieldAttrs[fieldName].isInvisible = true;
|
||||
break;
|
||||
}
|
||||
const isMeasure = node.getAttribute("type") === "measure";
|
||||
if (isMeasure) {
|
||||
// the last field with type="measure" (if any) will be used as measure else __count
|
||||
archInfo.measure = fieldName;
|
||||
} else {
|
||||
const { type } = archInfo.fields[fieldName]; // exists (rng validation)
|
||||
if (GROUPABLE_TYPES.includes(type)) {
|
||||
let groupBy = fieldName;
|
||||
const interval = node.getAttribute("interval");
|
||||
if (interval) {
|
||||
groupBy += `:${interval}`;
|
||||
}
|
||||
archInfo.groupBy.push(groupBy);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
return archInfo;
|
||||
}
|
||||
}
|
||||
// parse(arch) {
|
||||
// const xmlDoc = this.parseXML(arch);
|
||||
// const fieldFromTheArch = xmlDoc.getAttribute("fieldFromTheArch");
|
||||
// return {
|
||||
// fieldFromTheArch,
|
||||
// };
|
||||
// }
|
||||
//}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
/** @odoo-module **/
|
||||
import { Layout } from "@web/search/layout";
|
||||
import {useService } from "@web/core/utils/hooks";
|
||||
import { Component, onWillStart, useState} from "@odoo/owl";
|
||||
export class ScreenViewController extends Component {
|
||||
setup() {
|
||||
this.orm = useService("orm");
|
||||
|
||||
// The controller create the model and make it reactive so whenever this.model is
|
||||
// accessed and edited then it'll cause a rerendering
|
||||
this.model = useState(
|
||||
new this.props.Model(
|
||||
this.orm,
|
||||
this.props.resModel,
|
||||
this.props.fields,
|
||||
this.props.archInfo,
|
||||
this.props.domain
|
||||
)
|
||||
);
|
||||
|
||||
onWillStart(async () => {
|
||||
await this.model.load();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
ScreenViewController.template = "dss.screenview";
|
||||
ScreenViewController.components = { Layout };
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/** @odoo-module **/
|
||||
import { KeepLast } from "@web/core/utils/concurrency";
|
||||
|
||||
export class ScreenViewModel {
|
||||
constructor(orm, resModel, fields, archInfo, domain) {
|
||||
this.orm = orm;
|
||||
this.resModel = resModel;
|
||||
// We can access arch information parsed by the beautiful arch parser
|
||||
const { fieldFromTheArch } = archInfo;
|
||||
this.fieldFromTheArch = fieldFromTheArch;
|
||||
this.fields = fields;
|
||||
this.domain = domain;
|
||||
this.keepLast = new KeepLast();
|
||||
}
|
||||
|
||||
async load() {
|
||||
//The keeplast protect against concurrency call
|
||||
const { length, records } = await this.keepLast.add(
|
||||
this.orm.webSearchRead(this.resModel, this.domain, [this.fieldFromTheArch], {})
|
||||
);
|
||||
this.records = records;
|
||||
this.recordsLength = length;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/** @odoo-module **/
|
||||
import { _lt } from "@web/core/l10n/translation";
|
||||
import { registry } from "@web/core/registry";
|
||||
import {ScreenViewRenderer} from "./dss_screenview_renderer";
|
||||
import {ScreenViewController} from "./dss_screenview_controller";
|
||||
import {ScreenViewArchParser} from "./dss_screenview_archparser";
|
||||
import {ScreenViewModel} from "./dss_screenview_model";
|
||||
//import {GridRelationalModel} from "./grid_relational_model";
|
||||
export const ScreenView = {
|
||||
type: "screenview",
|
||||
display_name: _lt("ScreenView"),
|
||||
icon: "fa fa-th",
|
||||
multiRecord: true,
|
||||
Controller: ScreenViewController,
|
||||
Renderer: ScreenViewRenderer,
|
||||
ArchParser: ScreenViewArchParser,
|
||||
Model: ScreenViewModel,
|
||||
/**
|
||||
* Function that returns the props for the grid view.
|
||||
* @param {object} genericProps - Generic properties of the view.
|
||||
* @param {object} view - The view object.
|
||||
* @returns {object} Props for the grid view.
|
||||
*/
|
||||
props: (genericProps, view) => {
|
||||
const {ArchParser,Model,Renderer} = view;
|
||||
//const {arch,relatedModels,resModel} = genericProps;
|
||||
const {arch, fields, resModel } = genericProps;
|
||||
//const archInfo = new ArchParser().parse(arch, relatedModels, resModel);
|
||||
const archInfo = parser.parse(arch, fields);
|
||||
return {
|
||||
...genericProps,
|
||||
archInfo,
|
||||
Model: view.Model,
|
||||
Renderer,
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
// Register the grid view configuration
|
||||
registry.category("views").add("screenview", ScreenView);
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/** @odoo-module **/
|
||||
import { Component } from "@odoo/owl";
|
||||
export class ScreenViewRenderer extends Component {
|
||||
async setup() {
|
||||
}
|
||||
|
||||
}
|
||||
ScreenViewRenderer.template = "dss.screenviewrenderer";
|
||||
|
|
@ -11,17 +11,47 @@ var _t = core._t;
|
|||
var rpc = require('web.rpc');
|
||||
var self = this;
|
||||
var session = require('web.session');
|
||||
var viewRegistry = require('web.view_registry');
|
||||
var aktcontext = "";
|
||||
|
||||
function _onclickevent(event) {
|
||||
// Check if the clicked element has the class "button"
|
||||
if (event.target.classList.contains("ddbtn")) {
|
||||
alert(JSON.stringify($(event.currentTarget)))
|
||||
};
|
||||
};
|
||||
|
||||
function _onchangeevent(event) {
|
||||
// Check if the clicked element has the class "button"
|
||||
if (event.target.classList.contains("ddown")) {
|
||||
// Your event handler code
|
||||
// here
|
||||
// alert($(this))
|
||||
// alert(event.target.value)
|
||||
// alert(JSON.stringify($(event.target.value)))
|
||||
aktcontext.context.screenlayout = event.target.value
|
||||
alert(aktcontext);
|
||||
rpc.query({model: 'dss.screendesign',
|
||||
method: 'myscreenrebuild',
|
||||
args: [this.res_id],
|
||||
}).then(function (result) {
|
||||
alert(JSON.stringify(result));
|
||||
event.do_action(result);
|
||||
return result;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var screenDesigner = AbstractAction.extend({
|
||||
contentTemplate: 'dssscreenDesignerView',
|
||||
contentTemplate: 'screen_view.ScreenView',
|
||||
init: function(parent, context) {
|
||||
this._super(parent, context);
|
||||
aktcontext = context;
|
||||
this.dashboard_templates = ['MainSection'];
|
||||
},
|
||||
start: function() {
|
||||
var self = this;
|
||||
alert(aktcontext.context.screenlayout);
|
||||
this.set("title", 'Dashboard');
|
||||
return this._super().then(function() {
|
||||
self.render_dashboards();
|
||||
|
|
@ -33,31 +63,67 @@ var screenDesigner = AbstractAction.extend({
|
|||
},
|
||||
render_dashboards: function() {
|
||||
var self = this;
|
||||
this.fetch_data()
|
||||
var meins = "";
|
||||
var templates = []
|
||||
var templates = ['MainSection'];
|
||||
_.each(templates, function(template) {
|
||||
self.$('.o_hr_dashboard').append(QWeb.render(template, {widget: self}))
|
||||
});
|
||||
},
|
||||
fetch_data: function() {
|
||||
var self = this
|
||||
// fetch data to the tiles
|
||||
var def1 = this._rpc({
|
||||
model: 'dss.screendesign',
|
||||
|
||||
var def0 =this._rpc({
|
||||
model: 'dss.display.templates',
|
||||
method: "get_data",
|
||||
args: [],
|
||||
}).then(function (result) {
|
||||
|
||||
var $dropdown = document.querySelector('.ddown')
|
||||
|
||||
if (result.length>0) {
|
||||
result.forEach(element => {
|
||||
|
||||
$dropdown.append(new Option(element.displayname, element.nr));
|
||||
})
|
||||
.then(function (result) {
|
||||
$('#product_templates').append('<span>' + result.uuid + '</span>');
|
||||
$('#variants_count').append('<span>' + result.uuid + '</span>');
|
||||
$('#products_storable').append('<span>' + result.uuid + '</span>');
|
||||
$('#product_consumable').append('<span>' + result.uuid + '</span>');
|
||||
}
|
||||
|
||||
_.each(templates, function(template) {self.$('.meinfeld').append(meins)});
|
||||
})
|
||||
|
||||
document.addEventListener("click",_onclickevent)
|
||||
document.addEventListener("change",_onchangeevent)
|
||||
|
||||
var def1 =this._rpc({
|
||||
model: 'dss.advertisefields.templates',
|
||||
method: "get_data",
|
||||
args: [[aktcontext.context.screenlayout]],
|
||||
}).then(function (result) {
|
||||
|
||||
var displaycss = 'background-color:#38AFA0;float:left;border-style: solid;border-width: 0.1px;'
|
||||
const element = document.querySelector('.meincanvas')
|
||||
const rect = element.getBoundingClientRect();
|
||||
const topPosition = rect.top + window.scrollY;
|
||||
var topstart = topPosition + 60
|
||||
var width = window.innerWidth-40;
|
||||
var scale_faktor = (width / 3860)
|
||||
var height = Math.round(2200 * scale_faktor)
|
||||
meins = '<div style="background-color:#000000;padding:20px;height:'+height+'px;floating:left">'
|
||||
if (result.length>0) {
|
||||
result.forEach(element => {
|
||||
var ele_pos_x=element.pos_x*scale_faktor+20
|
||||
var ele_pos_y=element.pos_y*scale_faktor+topstart
|
||||
var ele_pos_h=element.pos_h*scale_faktor
|
||||
var ele_pos_w=element.pos_w*scale_faktor
|
||||
meins = meins + '<div class="ddbtn" style="'+displaycss+'position:absolute;left:'+ele_pos_x+'px;top:'+ele_pos_y+'px;width:'+ele_pos_w+'px;height:'+ele_pos_h+'px;">'+element.feldname+'</div>'
|
||||
});
|
||||
}
|
||||
// meins = meins + '<div style="'+displaycss+'width:200px;height:100px;">'+result.length+'</div>'
|
||||
// meins = meins + '<div style="'+displaycss+'width:300px;height:100px;">'+result+'</div>'
|
||||
// meins = meins + '<div style="'+displaycss+'width:100px;height:100px;">'+JSON.stringify(result)+'</div></div>'
|
||||
_.each(templates, function(template) {self.$('.o_hr_dashboard').append(meins)});
|
||||
})
|
||||
},
|
||||
});
|
||||
|
||||
core.action_registry.add('dss_screenDesigner_js_action', screenDesigner);
|
||||
|
||||
viewRegistry.add('ScreenDesigner', screenDesigner);
|
||||
|
||||
return screenDesigner;
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<t t-name="dss.screenview" owl="1">
|
||||
<Layout display="props.display" className="'h-100 overflow-auto'">
|
||||
<t t-component="props.Renderer" records="model.records" propsYouWant="'Hello world'"/>
|
||||
<p>Test</p>
|
||||
</Layout>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<t t-name="dss.screenviewrenderer" owl="1">
|
||||
<t t-esc="props.propsYouWant"/>
|
||||
<t t-foreach="props.records" t-as="record" t-key="record.id">
|
||||
// Show records
|
||||
</t>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
|
@ -1,35 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<t t-name="dssscreenDesignerView">
|
||||
<t t-name="screen_view.ScreenView">
|
||||
<div class="o_action o_view_controller o_kanban_view o_hr_dashboard">
|
||||
<div class="bottom-bar ms-4" data-bottombar="cookieMessage" id="rcorner1">
|
||||
<div class="bottom-bar__header">
|
||||
<div class="bottom-bar__text">
|
||||
<p class="bottom-bar__text">Feldübersicht</p>
|
||||
</div>
|
||||
<button class="bottom-bar__close" type="button" data-bottombar-close="cookieMessage">×</button>
|
||||
</div>
|
||||
<div class="bottom-bar__content_2">
|
||||
<span class="meinfeld">Displayvorlage :</span>
|
||||
<select type="text" name="displaytemplate" class="form-control ddown">
|
||||
</select>
|
||||
</div>
|
||||
<div class="bottom-bar__content_3">
|
||||
<span>test</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span class="meincanvas"/>
|
||||
</t>
|
||||
|
||||
<t t-name="MainSection">
|
||||
<section class="ScreenDesigner_Main" id="main_section">
|
||||
<div class="col-sm-12 mb-4">
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-12 col-md-8 ms-4 mt-4">
|
||||
<t t-name="screen_view.ScreenViewRenderer" owl="1">
|
||||
<div id="product_templates">
|
||||
<h2 class="section-header">Feld - Designer</h2>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Tiles -->
|
||||
<span id="templates">
|
||||
<div id="product_templates"/>
|
||||
</span>
|
||||
</div>
|
||||
</section>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
</record>
|
||||
|
||||
<record id="action_dss_advertisefields_templates_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage Werbefelder</field>
|
||||
<field name="name">DigitalSignage Werbefeld Vorlagen</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">dss.advertisefields.templates</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree string="Werbefeld Templates" multi_edit="1" edit="1">
|
||||
<field name="displayname"/>
|
||||
<field name="fullsize_w"/>
|
||||
<field name="fullsize_h"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
@ -18,9 +20,22 @@
|
|||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<notebook>
|
||||
<page string="Einstellungen">
|
||||
<group name="basethings">
|
||||
<field name="displayname"/>
|
||||
</group>
|
||||
<group name="basethings" string="Auflösung">
|
||||
<field name="fullsize_w"/>
|
||||
<field name="fullsize_h"/>
|
||||
</group>
|
||||
</page>
|
||||
<page String="Inhalte">
|
||||
<group name="members">
|
||||
<field name="feldtemplates"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" options="{'post_refresh':True}" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="action_dss_main_m2mmail" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage Alle M2M Nachrichten</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">dss.m2mmail</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
No Contracts/Clients found. Let's create one!
|
||||
</p>
|
||||
<p>
|
||||
Keep track of the progress of your contracts from creation to completion.<br/>
|
||||
Collaborate efficiently by chatting in real-time or via email.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="dss_main_m2mmail_tree" model="ir.ui.view">
|
||||
<field name="name">dss_m2mmail_tree</field>
|
||||
<field name="model">dss.m2mmail</field>
|
||||
<field name="priority" eval="17"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Vertragsuebersicht">
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_main_m2mmail_form" model="ir.ui.view">
|
||||
<field name="name">dss_main_m2mmail_form</field>
|
||||
<field name="model">dss.m2mmail</field>
|
||||
<field eval="2" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group name="interval" string="Intervaldaten">
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" options="{'post_refresh':True}" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -3,8 +3,42 @@
|
|||
|
||||
<record id="dss_screenDesigner_action_dss_screenDesigner" model="ir.actions.client">
|
||||
<field name="name">Attendance</field>
|
||||
<field name="context">{
|
||||
'screenlayout': 1,
|
||||
}
|
||||
</field>
|
||||
<field name="tag">dss_screenDesigner_js_action</field>
|
||||
</record>
|
||||
|
||||
<record id="action_dss_screenDesigner_view_ScreenViewdesigner" model="ir.ui.view">
|
||||
<field name="name">My Grid View</field>
|
||||
<field name="model">dss.screendesign</field>
|
||||
<field name="arch" type="xml">
|
||||
<screenview string="My Grid View" fieldFromTheArch="dss.screendesign">
|
||||
<!-- Add your columns here -->
|
||||
<field name="screenname"/>
|
||||
</screenview>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="record_id_view_grid" model="ir.actions.act_window.view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">screenview</field>
|
||||
<field name="view_id" ref="DigitalSignage.action_dss_screenDesigner_view_ScreenViewdesigner"/>
|
||||
<field name="act_window_id" ref=""/>
|
||||
</record>
|
||||
|
||||
<record id="action_dss_screenDesigner_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage ScreenDesign</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="view_mode">screenview</field>
|
||||
<field name="res_model">dss.screendesign</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="'o_view_nocontent_smiling_face">
|
||||
Neuen Systemtyp erstellen
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -414,12 +414,19 @@
|
|||
sequence="10"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_dcreendesign"
|
||||
id="menu_dss_screendesign"
|
||||
name="Screendesigner Tool"
|
||||
parent="menu_dss_interntools"
|
||||
action="dss_screenDesigner_action_dss_screenDesigner"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_screendesign_view"
|
||||
name="Screendesigner View"
|
||||
parent="menu_dss_interntools"
|
||||
action="action_dss_screenDesigner_view"
|
||||
sequence="30"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_Nachrichten"
|
||||
name="Mail Nachrichten"
|
||||
|
|
@ -427,6 +434,12 @@
|
|||
action="mail.action_view_mail_message"
|
||||
sequence="30"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_interntools_mailsep"
|
||||
name="EMails"
|
||||
parent="menu_dss_interntools"
|
||||
sequence="39"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_importInvoicelist"
|
||||
name="Import Rechnungslisten"
|
||||
|
|
@ -434,6 +447,13 @@
|
|||
action="action_dss_importInvoicelist"
|
||||
sequence="40"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_m2mmaillist"
|
||||
name="M2M Simnachrichten"
|
||||
parent="menu_dss_interntools"
|
||||
action="action_dss_main_m2mmail"
|
||||
sequence="50"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_contracts_ads_topics"
|
||||
name="Werbethemen TV verwalten"
|
||||
|
|
|
|||
Loading…
Reference in New Issue