fix(tk_construction_management): chatter migration + chart NaN guard + remove debug logs
- 12 oe_chatter <div> blocks migrated to <chatter/> (Odoo 18 modern pattern) Removes Missing widget: mail_followers/mail_activity/mail_thread warnings. - renderGraph guards against empty/all-zero series. ApexCharts was producing M NaN NaN SVG paths when total=0 in donut/pie charts. Now shows No data. - Removed two leftover console.log(..., dasdsa) debug calls in static/src/js/construction_dashboard.js. User-visible: chatter renders cleanly, no SVG NaN console errors, no debug noise.
This commit is contained in:
@@ -45,8 +45,6 @@ export class ConstructionDashboard extends Component {
|
|||||||
// args: [false, false],
|
// args: [false, false],
|
||||||
// });
|
// });
|
||||||
const result = await this.orm.call("tk.construction.dashboard", "get_construction_state", [false, false]);
|
const result = await this.orm.call("tk.construction.dashboard", "get_construction_state", [false, false]);
|
||||||
console.log(result,'dasdsa');
|
|
||||||
|
|
||||||
this.state.stats = result;
|
this.state.stats = result;
|
||||||
this.state.sites = Object.entries(result.con_sites || {}).map(([id, name]) => ({ id, name }));
|
this.state.sites = Object.entries(result.con_sites || {}).map(([id, name]) => ({ id, name }));
|
||||||
this.renderCharts(result);
|
this.renderCharts(result);
|
||||||
@@ -82,7 +80,6 @@ export class ConstructionDashboard extends Component {
|
|||||||
|
|
||||||
this.state.stats = data;
|
this.state.stats = data;
|
||||||
this.renderCharts(data);
|
this.renderCharts(data);
|
||||||
console.log(this.state.stats,'dasdsa');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openAction(name, resModel, domain = []) {
|
openAction(name, resModel, domain = []) {
|
||||||
@@ -221,6 +218,16 @@ export class ConstructionDashboard extends Component {
|
|||||||
renderGraph(el, options) {
|
renderGraph(el, options) {
|
||||||
if (!el) return;
|
if (!el) return;
|
||||||
el.innerHTML = "";
|
el.innerHTML = "";
|
||||||
|
// NaN-guard: ApexCharts emits 'M NaN NaN A NaN' SVG warnings when series is
|
||||||
|
// empty or all zeros (donut/pie divide by total=0). Show 'No data' instead.
|
||||||
|
const series = options.series || [];
|
||||||
|
const hasData = series.some((s) =>
|
||||||
|
typeof s === 'number' ? s > 0 : (s && s.data && s.data.length > 0)
|
||||||
|
);
|
||||||
|
if (!hasData) {
|
||||||
|
el.innerHTML = '<div class="text-muted text-center p-4">No data</div>';
|
||||||
|
return;
|
||||||
|
}
|
||||||
const chart = new ApexCharts(el, options);
|
const chart = new ApexCharts(el, options);
|
||||||
chart.render();
|
chart.render();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -334,11 +334,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -306,11 +306,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -164,11 +164,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -186,11 +186,7 @@
|
|||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -234,11 +234,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -228,11 +228,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -55,11 +55,7 @@
|
|||||||
<field name="reject_reason" invisible="status != 'reject'"/>
|
<field name="reject_reason" invisible="status != 'reject'"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -65,11 +65,7 @@
|
|||||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -179,11 +175,7 @@
|
|||||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -293,11 +285,7 @@
|
|||||||
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
<field name="reject_reason" invisible="qc_status != 'reject'"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -103,11 +103,7 @@
|
|||||||
<field name="total_amount"/>
|
<field name="total_amount"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -699,11 +699,7 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<chatter/>
|
||||||
<field name="message_follower_ids"/>
|
|
||||||
<field name="activity_ids"/>
|
|
||||||
<field name="message_ids"/>
|
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
Reference in New Issue
Block a user