Pular para o conteúdo
Odoo Menu
  • Entrar
  • Experimente grátis
  • Aplicativos
    Finanças
    • Financeiro
    • Faturamento
    • Despesas
    • Planilhas (BI)
    • Documentos
    • Assinar Documentos
    Vendas
    • CRM
    • Vendas
    • PDV Loja
    • PDV Restaurantes
    • Assinaturas
    • Locação
    Websites
    • Criador de Sites
    • e-Commerce
    • Blog
    • Fórum
    • Chat ao Vivo
    • e-Learning
    Cadeia de mantimentos
    • Inventário
    • Fabricação
    • PLM - Ciclo de Vida do Produto
    • Compras
    • Manutenção
    • Qualidade
    Recursos Humanos
    • Funcionários
    • Recrutamento
    • Folgas
    • Avaliações
    • Indicações
    • Frota
    Marketing
    • Redes Sociais
    • Marketing por E-mail
    • Marketing por SMS
    • Eventos
    • Automação de Marketing
    • Pesquisas
    Serviços
    • Projeto
    • Planilhas de Horas
    • Serviço de Campo
    • Central de Ajuda
    • Planejamento
    • Compromissos
    Produtividade
    • Mensagens
    • Aprovações
    • Internet das Coisas
    • VoIP
    • Conhecimento
    • WhatsApp
    Aplicativos de terceiros Odoo Studio Plataforma Odoo Cloud
  • Setores
    Varejo
    • Loja de livros
    • Loja de roupas
    • Loja de móveis
    • Mercearia
    • Loja de ferramentas
    • Loja de brinquedos
    Comida e hospitalidade
    • Bar e Pub
    • Restaurante
    • Fast Food
    • Hospedagem
    • Distribuidor de bebidas
    • Hotel
    Imóveis
    • Imobiliária
    • Escritório de arquitetura
    • Construção
    • Administração de propriedades
    • Jardinagem
    • Associação de proprietários de imóveis
    Consultoria
    • Escritório de Contabilidade
    • Parceiro Odoo
    • Agência de marketing
    • Escritório de advocacia
    • Aquisição de talentos
    • Auditoria e Certificação
    Fabricação
    • Têxtil
    • Metal
    • Móveis
    • Alimentação
    • Cervejaria
    • Presentes corporativos
    Saúde e Boa forma
    • Clube esportivo
    • Loja de óculos
    • Academia
    • Profissionais de bem-estar
    • Farmácia
    • Salão de cabeleireiro
    Comércio
    • Handyman
    • Hardware e Suporte de TI
    • Sistemas de energia solar
    • Sapataria
    • Serviços de limpeza
    • Serviços de climatização
    Outros
    • Organização sem fins lucrativos
    • Agência Ambiental
    • Aluguel de outdoors
    • Fotografia
    • Aluguel de bicicletas
    • Revendedor de software
    Navegar por todos os setores
  • Comunidade
    Aprenda
    • Tutoriais
    • Documentação
    • Certificações
    • Treinamento
    • Blog
    • Podcast
    Empodere a Educação
    • Programa de educação
    • Scale Up! Jogo de Negócios
    • Visite a Odoo
    Obtenha o Software
    • Baixar
    • Comparar edições
    • Releases
    Colaborar
    • Github
    • Fórum
    • Eventos
    • Traduções
    • Torne-se um parceiro
    • Serviços para parceiros
    • Cadastre seu escritório contábil
    Obtenha os serviços
    • Encontre um parceiro
    • Encontre um Contador
    • Conheça um consultor
    • Serviços de Implementação
    • Referências de Clientes
    • Suporte
    • Upgrades
    Github YouTube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Faça uma demonstração
  • Preços
  • Ajuda

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Financeiro
  • Inventário
  • PoS
  • Projeto
  • MRP
All apps
É necessário estar registrado para interagir com a comunidade.
Todas as publicações Pessoas Emblemas
Marcadores (Ver tudo)
odoo accounting v14 pos v15
Sobre este fórum
É necessário estar registrado para interagir com a comunidade.
Todas as publicações Pessoas Emblemas
Marcadores (Ver tudo)
odoo accounting v14 pos v15
Sobre este fórum
Ajuda

Extending the Class in the web gantt

Inscrever

Seja notificado quando houver atividade nesta publicação

Esta pergunta foi sinalizada
jsganttprototypeodoo8.0
1 Responder
5723 Visualizações
Avatar
napster

please find the code that i edited as marked as mycode ..Is this there is any other way to do this

openerp.gantt_view_custom = function(instance){
instance.gantt_view_custom = {};
var module = instance.web_gantt;
var _super_ = module.GanttTask.prototype.create;
gantt_view_custom.GanttTask.prototype.create = function(){ console.log('Hello!');
_super_.call(this);
};
}

console.log("this yyyyyyyy creae")
var containerTasks = this.Chart.oData.firstChild;
var containerNames = null;
if (this.Chart._showTreePanel) containerNames = this.Chart.panelNames.firstChild;
var predecessorTask = this.TaskInfo.PredecessorTask;
var parentTask = this.TaskInfo.ParentTask;
var isCParentTask = (this.TaskInfo.ChildTasks.length > 0);
var self = this;
this.cTaskItem = [];
this.cTaskNameItem = [];
//creation arrTasks if (!parentTask) { if (this.TaskInfo.previousParentTask) { this.previousParentTask = this.Project.getTaskById(this.TaskInfo.previousParentTask.Id);
var lastChildTask = this.Chart.getLastChildTask(this.previousParentTask);

// ######################## My code
// for moving the workorder bar to the manufactoring order
this.posY = this.Project.posY;
// #########################################
// this.posY = parseInt(lastChildTask.cTaskItem[0].style.top) + this.Chart.heightTaskItem + 11;
this.previousParentTask.nextParentTask = this;
} else {
// ######################## My code
// for moving the workorder bar to the manufactoring order
this.posY = this.Project.posY;
// #########################################
// this.posY = parseInt(this.Project.projectItem[0].style.top) + this.Chart.heightTaskItem + 11;
} }
if (parentTask) { var task = this.Project.getTaskById(this.TaskInfo.ParentTask.Id);
this.parentTask = task;
if (this.TaskInfo.previousChildTask) { this.previousChildTask = this.Project.getTaskById(this.TaskInfo.previousChildTask.Id);
var lastChildTask = this.Chart.getLastChildTask(this.previousChildTask);
this.posY = parseInt(lastChildTask.cTaskItem[0].style.top) + this.Chart.heightTaskItem + 11;
this.previousChildTask.nextChildTask = this;
} else { this.posY = parseInt(task.cTaskItem[0].style.top) + this.Chart.heightTaskItem + 11;
} task.childTask.push(this);
}
if (predecessorTask) { var task = this.Project.getTaskById(predecessorTask.Id);
this.predTask = task;
task.childPredTask.push(this);
}
//creation task item this.cTaskItem.push(this.createTaskItem());
containerTasks.appendChild(this.cTaskItem[0]);
if (this.Chart.panelNames) { this.cTaskNameItem.push(this.createTaskNameItem(isCParentTask));
this.Chart.panelNames.firstChild.appendChild(this.cTaskNameItem[0]);
}
if (this.Chart.isShowDescTask) { containerTasks.appendChild(this.createTaskDescItem());
}
//Create Connecting Lines var arrConnectingLines = [];
if (predecessorTask) arrConnectingLines = this.createConnectingLinesDS();
this.cTaskItem.push(arrConnectingLines);
if (this.Chart.panelNames) { //Create Connecting Lines var arrConnectingLinesNames = [];
if (parentTask) { this.cTaskNameItem[0].style.left = parseInt(this.parentTask.cTaskNameItem[0].style.left) + 15 + "px";
arrConnectingLinesNames = this.createConnectingLinesPN();
} this.checkWidthTaskNameItem();
var treeImg = null;
if (isCParentTask) treeImg = this.createTreeImg();
this.cTaskNameItem.push(arrConnectingLinesNames);
this.cTaskNameItem.push(treeImg);
} this.addDayInPanelTime();
// console.log("thissssssssssdddddddddddddssssssss",this) console.log("thissssssssssdddddddddddddssssssss",this.Project.posY)// console.log("thissssssssssdddddddddddddssssssss",this.posY)// this.posY = this.Project.posY// console.log("thissssssssssdddddddddddddssssssss",this.posY)//
// ######################## My code
if (this.Chart.Project){ var project_obj = this.Chart.Project;
} for (var key in project_obj) { if (project_obj.hasOwnProperty(key)) { console.log(key + " -> " , project_obj[key]['Id']);
var id_project = project_obj[key]['Id'] $("#"+id_project.toString()).css("display", "None");
} } $(".taskNameItem").css("display", "None"); //hiding the workorder// my code return this;

};

0
Avatar
Cancelar
Avatar
Axel Mendoza
Melhor resposta

In odoo js framework you could change any widget class by using mostly 2 ways.

1- Using include function that it will change the properties(functions included) original class widget prototype

2- Using extend function that it will return a copy of the changes to the properties(functions included) original class widget prototype

In both cases you always will be able to access the overrides functions in the new ones using this.super or this._super (in newer versions) depending on the Odoo version. You could call it passing the same parameters received or just call it as using js prototype function apply to call it with arguments like:

 this._super.apply(this, arguments);

That is for example the case when you need to change a function like in your case but still need to call the original one and you could do it using the super call.

For the non widget classes created using js prototype like the case of GanttTask you could do what you are doing copying the original function to call it when you need to and just replace the original function in the class protoype but you need to put all your code inside the js odoo module like:

openerp.gantt_view_custom = function(instance){
    instance.gantt_view_custom = {};
    var module = instance.web_gantt;
    var _super_ = GanttTask.prototype.create;
    
    GanttTask.prototype.create = function(){
        var containerTasks = this.Chart.oData.firstChild;
        var containerNames = null;
        if (this.Chart._showTreePanel) containerNames = this.Chart.panelNames.firstChild;
        var predecessorTask = this.TaskInfo.PredecessorTask;
        var parentTask = this.TaskInfo.ParentTask;
        var isCParentTask = (this.TaskInfo.ChildTasks.length > 0);
        var self = this;
        
        this.cTaskItem = [];
        this.cTaskNameItem = [];
        
        //creation arrTasks
        if (!parentTask) {
            if (this.TaskInfo.previousParentTask) {
                this.previousParentTask = this.Project.getTaskById(this.TaskInfo.previousParentTask.Id);
                var lastChildTask = this.Chart.getLastChildTask(this.previousParentTask);
                this.posY = this.Project.posY;
                this.previousParentTask.nextParentTask = this;
            
            } else {
                this.posY = this.Project.posY;
            }
        }
        
        if (parentTask) {
            var task = this.Project.getTaskById(this.TaskInfo.ParentTask.Id);
            this.parentTask = task;
            
            if (this.TaskInfo.previousChildTask) {
                this.previousChildTask = this.Project.getTaskById(this.TaskInfo.previousChildTask.Id);
                var lastChildTask = this.Chart.getLastChildTask(this.previousChildTask);
                this.posY = parseInt(lastChildTask.cTaskItem[0].style.top) + this.Chart.heightTaskItem + 11;
                this.previousChildTask.nextChildTask = this;
            
            } else {
                this.posY = parseInt(task.cTaskItem[0].style.top) + this.Chart.heightTaskItem + 11;
            }
            task.childTask.push(this);
        }
        
        if (predecessorTask) {
            var task = this.Project.getTaskById(predecessorTask.Id);
            this.predTask = task;
            task.childPredTask.push(this);
        }
        
        //creation task item
        this.cTaskItem.push(this.createTaskItem());
        containerTasks.appendChild(this.cTaskItem[0]);
        
        if (this.Chart.panelNames) {
            this.cTaskNameItem.push(this.createTaskNameItem(isCParentTask));
            this.Chart.panelNames.firstChild.appendChild(this.cTaskNameItem[0]);
        }
        
        if (this.Chart.isShowDescTask) {
            containerTasks.appendChild(this.createTaskDescItem());
        }
        
        //Create Connecting Lines
        var arrConnectingLines = [];
        if (predecessorTask) arrConnectingLines = this.createConnectingLinesDS();
        this.cTaskItem.push(arrConnectingLines);
        
        if (this.Chart.panelNames) {
            //Create Connecting Lines
            var arrConnectingLinesNames = [];
            if (parentTask) {
                this.cTaskNameItem[0].style.left = parseInt(this.parentTask.cTaskNameItem[0].style.left) + 15 + "px";
                arrConnectingLinesNames = this.createConnectingLinesPN();
            }
            this.checkWidthTaskNameItem();
            
            var treeImg = null;
            if (isCParentTask) treeImg = this.createTreeImg();
            
            this.cTaskNameItem.push(arrConnectingLinesNames);
            this.cTaskNameItem.push(treeImg);
        }
        this.addDayInPanelTime();
        //    console.log("thissssssssssdddddddddddddssssssss",this)
        console.log("thissssssssssdddddddddddddssssssss",this.Project.posY)
        //    console.log("thissssssssssdddddddddddddssssssss",this.posY)
        //    this.posY = this.Project.posY
        //    console.log("thissssssssssdddddddddddddssssssss",this.posY)
        //    
        // ########################   My code
        if (this.Chart.Project){
            var project_obj = this.Chart.Project;
        }
        for (var key in project_obj) {
            if (project_obj.hasOwnProperty(key)) {
                console.log(key + " -> " , project_obj[key]['Id']);
                var id_project = project_obj[key]['Id']
                $("#"+id_project.toString()).css("display", "None");
            }
        }
        $(".taskNameItem").css("display", "None");
        //hiding the workorder
        // my code
        return this;
    }
});

Hope this helps

1
Avatar
Cancelar
napster
Autor

Thank you It worked..!!!

Está gostando da discussão? Não fique apenas lendo, participe!

Crie uma conta hoje mesmo para aproveitar os recursos exclusivos e interagir com nossa incrível comunidade!

Inscreva-se
Publicações relacionadas Respostas Visualizações Atividade
How to create a widget to render image in form view?
js odoo8.0
Avatar
0
dez. 15
5196
[Solved] [odoo8:JS]: Can we update value of that record which is being clicked from tree view?
web js odoo8.0
Avatar
Avatar
Avatar
3
dez. 17
6309
How to display alert on button onclick JS in odoo 8?
xml js python2.7 odooV8 odoo8.0
Avatar
Avatar
2
ago. 20
9502
how to implement joint piece in odoo 8 in one view
odoo8.0
Avatar
0
abr. 24
2666
what is the reason behind extra move? in stock
odoo8.0
Avatar
Avatar
Avatar
Avatar
4
nov. 23
6863
Comunidade
  • Tutoriais
  • Documentação
  • Fórum
Open Source
  • Baixar
  • Github
  • Runbot
  • Traduções
Serviços
  • Odoo.sh Hosting
  • Suporte
  • Upgrade
  • Desenvolvimentos personalizados
  • Educação
  • Encontre um Contador
  • Encontre um parceiro
  • Torne-se um parceiro
Sobre nós
  • Nossa empresa
  • Ativos da marca
  • Contato
  • Empregos
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Legal • Privacidade
  • Segurança
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo é um conjunto de aplicativos de negócios em código aberto que cobre todas as necessidades de sua empresa: CRM, comércio eletrônico, contabilidade, estoque, ponto de venda, gerenciamento de projetos, etc.

A proposta de valor exclusiva Odoo é ser, ao mesmo tempo, muito fácil de usar e totalmente integrado.

Site feito com

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now