Browse Source

Feb 23 : [UPDT] Bug Fixed

pull/243/head
AjmalCybro 2 years ago
parent
commit
18d888d8c3
  1. 2
      one2many_mass_select_delete/README.rst
  2. 8
      one2many_mass_select_delete/__manifest__.py
  3. 193
      one2many_mass_select_delete/static/src/js/widget.js
  4. 35
      one2many_mass_select_delete/static/src/xml/widget_view.xml

2
one2many_mass_select_delete/README.rst

@ -22,6 +22,6 @@ Features
Credits Credits
======= =======
Developer: Nilmar Shereef @ cybrosys, shereef@cybrosys.in Developer: Nilmar Shereef @ cybrosys, shereef@cybrosys.in
version 16: Midilaj VK@cybrosys version 16: Gayathri@cybrosys

8
one2many_mass_select_delete/__manifest__.py

@ -21,7 +21,7 @@
############################################################################# #############################################################################
{ {
'name': 'One2many Mass Select Delete Widget', 'name': 'One2many Mass Select Delete Widget',
'version': "16.0.1.0.0", 'version': "16.0.1.0.1",
'summary': """One2many Mass Select/Deselect Widget""", 'summary': """One2many Mass Select/Deselect Widget""",
'description': """One2many Mass Select/ Deselect Widget""", 'description': """One2many Mass Select/ Deselect Widget""",
'category': 'Tools', 'category': 'Tools',
@ -29,13 +29,11 @@
'company': 'Cybrosys Techno Solutions', 'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions', 'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com", 'website': "https://www.cybrosys.com",
'depends': ['web'], 'depends': ['web','base'],
'assets': { 'assets': {
'web.assets_backend': [ 'web.assets_backend': [
'one2many_mass_select_delete/static/src/js/widget.js',
],
'web.assets_qweb': [
'one2many_mass_select_delete/static/src/xml/widget_view.xml', 'one2many_mass_select_delete/static/src/xml/widget_view.xml',
'one2many_mass_select_delete/static/src/js/widget.js',
], ],
}, },
'images': ['static/description/banner.png'], 'images': ['static/description/banner.png'],

193
one2many_mass_select_delete/static/src/js/widget.js

@ -1,146 +1,55 @@
odoo.define('one2many_mass_select_delete.form_widgets', function (require) { /** @odoo-module */
"use strict";
import { X2ManyField } from "@web/views/fields/x2many/x2many_field";
var core = require('web.core'); import { registry } from "@web/core/registry";
var utils = require('web.utils'); import { standardFieldProps } from "@web/views/fields/standard_field_props";
var fieldRegistry = require('web.field_registry'); import { ListRenderer } from "@web/views/list/list_renderer";
var ListRenderer = require('web.ListRenderer'); import {listView} from '@web/views/list/list_view';
var rpc = require('web.rpc'); import { patch } from "@web/core/utils/patch";
var FieldOne2Many = require('web.relational_fields').FieldOne2Many;
var _t = core._t; export class TestListRenderer extends ListRenderer {
get hasSelectors() {
ListRenderer.include({ this.props.allowSelectors = true
_updateSelection: function () { this.props.list.selection = true
this.selection = []; return this.props.allowSelectors && !this.env.isSmall;
var self = this; }
var $inputs = this.$('tbody .o_list_record_selector input:visible:not(:disabled)'); toggleRecordSelection(record) {
var allChecked = $inputs.length > 0; record.toggleSelection();
$inputs.each(function (index, input) { }
if (input.checked) {
self.selection.push($(input).closest('tr').data('id')); }
} else { export class TestX2ManyField extends X2ManyField {
allChecked = false; get hasSelected(){
} return this.list.records.filter((rec) => rec.selected).length
}); }
if(this.selection.length > 0){ deleteSelected(){
$('.button_delete_order_lines').show() var w_response = confirm("Dou You Want to Delete ?");
$('.button_select_order_lines').show() if (w_response){
console.log(this.list.records)
}else{ let selected = this.list.records.filter((rec) => rec.selected)
$('.button_delete_order_lines').hide() if (this.activeActions.onDelete) {
$('.button_select_order_lines').hide() selected.forEach((rec) => {
} this.activeActions.onDelete(rec);
this.$('thead .o_list_record_selector input').prop('checked', allChecked); })
this.trigger_up('selection_changed', { selection: this.selection });
this._updateFooter();
},
})
var One2manyDelete = FieldOne2Many.extend({
template: 'One2manyDelete',
events: {
"click .button_delete_order_lines": "delete_selected_lines",
"click .button_select_order_lines": "selected_lines",
},
init: function() {
this._super.apply(this, arguments);
},
delete_selected_lines: function()
{
var self=this;
var current_model = this.recordData[this.name].model;
var selected_lines = self.find_deleted_lines();
if (selected_lines.length === 0)
{
return this.displayNotification({ message: _t('Please Select at least One Record.'), type: 'danger' });
}
var w_response = confirm("Dou You Want to Delete ?");
if (w_response) {
rpc.query({
'model': current_model,
'method': 'unlink',
'args': [selected_lines],
}).then(function(result){
self.trigger_up('reload');
});
}
},
selected_lines: function()
{
var self=this;
var current_model = this.recordData[this.name].model;
var selected_lines = self.find_selected_lines();
if (selected_lines.length === 0)
{
return this.displayNotification({ message: _t('Please Select at least One Record.'), type: 'danger' });
}
var w_response = confirm("Dou You Want to Select ?");
if (w_response) {
rpc.query({
'model': current_model,
'method': 'unlink',
'args': [selected_lines],
}).then(function(result){
self.trigger_up('reload');
});
}
},
_getRenderer: function () {
if (this.view.arch.tag === 'kanban') {
return One2ManyKanbanRenderer;
} }
if (this.view.arch.tag === 'tree') { }
return ListRenderer.extend({ }
init: function (parent, state, params) { deleteUnselected(){
this._super.apply(this, arguments); var w_response = confirm("Dou You Want to Select?");
this.hasSelectors = true; if (w_response){
}, let unselected = this.list.records.filter((rec) => !rec.selected)
}); if (this.activeActions.onDelete) {
unselected.forEach((rec) => {
this.activeActions.onDelete(rec);
})
} }
return this._super.apply(this, arguments); }
}, }
find_deleted_lines: function () { }
var self=this; TestX2ManyField.components = {
var selected_list =[]; ...X2ManyField.components, ListRenderer: TestListRenderer
this.$el.find('td.o_list_record_selector input:checked') };
.closest('tr').each(function () { TestX2ManyField.template = "one2many_mass_select_delete.One2manyDelete";
selected_list.push(parseInt(self._getResId($(this).data('id'))));
});
return selected_list;
},
find_selected_lines: function ()
{ var self = this;
var selected_list =[];
var selected_list1 =[];
var selected_list2 =[];
this.$el.find('td.o_list_record_selector input:checked')
.closest('tr').each(function () {
selected_list.push(parseInt(self._getResId($(this).data('id'))));
});
if (selected_list.length != 0) {
this.$el.find('td.o_list_record_selector')
.closest('tr').each(function () {
selected_list1.push(parseInt(self._getResId($(this).data('id'))));
});
selected_list2 = selected_list1.filter(function (x) {
return selected_list.indexOf(x) < 0
});
}
return selected_list2;
},
_getResId: function (recordId) {
var record;
utils.traverse_records(this.recordData[this.name], function (r) {
if (r.id === recordId) {
record = r;
}
});
return record.res_id;
},
}); registry.category("fields").add("one2many_delete", TestX2ManyField);
fieldRegistry.add('one2many_delete', One2manyDelete);
});

35
one2many_mass_select_delete/static/src/xml/widget_view.xml

@ -1,20 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve"> <templates id="template" xml:space="preserve">
<t t-name="One2manyDelete"> <t t-name="one2many_mass_select_delete.One2manyDelete" t-inherit="web.X2ManyField" t-inherit-mode="primary" owl="1">
<div> <xpath expr="//div[hasclass('o_x2m_control_panel')]" position="before">
<button t-if="!widget.get('effective_readonly')" style="margin-bottom: 1%;display:none;" <div>
class="button_delete_order_lines" <button t-if="hasSelected" class="btn btn-danger" t-on-click="deleteSelected">
href="javascript:void(0)"> <span class="fa fa-trash"/>
<span class="fa fa-trash"/> </button>
</button> <button t-if="hasSelected" class="btn btn-success" t-on-click="deleteUnselected">
<button t-if="!widget.get('effective_readonly')" style="margin-bottom: 1%;display:none;" <span class="fa fa-check"/>
class="button_select_order_lines" </button>
href="javascript:void(0)"> <t t-if="props.readonly">
<span class="fa fa-check"/> <span class="oe_form_char_content"/>
</button> </t>
<t t-if="widget.get('effective_readonly')"> </div>
<span class="oe_form_char_content"></span> </xpath>
</t> </t>
</div>
</t>
</templates> </templates>

Loading…
Cancel
Save