From e1f8020e929fe08577eba185922837dc8d35781f Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 28 Dec 2022 13:34:05 +0100 Subject: [PATCH 001/235] [ADD] spreadsheet_oca --- spreadsheet_oca/README.rst | 9 ++ spreadsheet_oca/__init__.py | 1 + spreadsheet_oca/__manifest__.py | 32 +++++ spreadsheet_oca/models/__init__.py | 3 + .../models/spreadsheet_abstract.py | 76 ++++++++++++ .../models/spreadsheet_oca_revision.py | 18 +++ .../models/spreadsheet_spreadsheet.py | 57 +++++++++ spreadsheet_oca/readme/CONTRIBUTORS.rst | 1 + spreadsheet_oca/readme/DESCRIPTION.rst | 1 + spreadsheet_oca/security/ir.model.access.csv | 3 + spreadsheet_oca/security/security.xml | 52 ++++++++ spreadsheet_oca/static/description/icon.png | Bin 0 -> 4207 bytes spreadsheet_oca/static/description/icon.svg | 1 + .../src/spreadsheet/bundle/spreadsheet.xml | 110 +++++++++++++++++ .../bundle/spreadsheet_action.esm.js | 98 +++++++++++++++ .../bundle/spreadsheet_controlpanel.esm.js | 41 +++++++ .../bundle/spreadsheet_renderer.esm.js | 113 ++++++++++++++++++ .../src/spreadsheet/pivot_controller.esm.js | 27 +++++ .../static/src/spreadsheet/spreadsheet.scss | 23 ++++ .../static/src/spreadsheet/spreadsheet.xml | 17 +++ .../src/spreadsheet/spreadsheet_action.esm.js | 21 ++++ .../views/spreadsheet_spreadsheet.xml | 78 ++++++++++++ 22 files changed, 782 insertions(+) create mode 100644 spreadsheet_oca/README.rst create mode 100644 spreadsheet_oca/__init__.py create mode 100644 spreadsheet_oca/__manifest__.py create mode 100644 spreadsheet_oca/models/__init__.py create mode 100644 spreadsheet_oca/models/spreadsheet_abstract.py create mode 100644 spreadsheet_oca/models/spreadsheet_oca_revision.py create mode 100644 spreadsheet_oca/models/spreadsheet_spreadsheet.py create mode 100644 spreadsheet_oca/readme/CONTRIBUTORS.rst create mode 100644 spreadsheet_oca/readme/DESCRIPTION.rst create mode 100644 spreadsheet_oca/security/ir.model.access.csv create mode 100644 spreadsheet_oca/security/security.xml create mode 100644 spreadsheet_oca/static/description/icon.png create mode 100644 spreadsheet_oca/static/description/icon.svg create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss create mode 100644 spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml create mode 100644 spreadsheet_oca/static/src/spreadsheet/spreadsheet_action.esm.js create mode 100644 spreadsheet_oca/views/spreadsheet_spreadsheet.xml diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst new file mode 100644 index 00000000..854bfcc0 --- /dev/null +++ b/spreadsheet_oca/README.rst @@ -0,0 +1,9 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=============== +Spreadsheet Oca +=============== + +Allow to edit spreadsheets diff --git a/spreadsheet_oca/__init__.py b/spreadsheet_oca/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/spreadsheet_oca/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py new file mode 100644 index 00000000..41b10bb1 --- /dev/null +++ b/spreadsheet_oca/__manifest__.py @@ -0,0 +1,32 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Spreadsheet Oca", + "summary": """ + Allow to edit spreadsheets""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "CreuBlanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/spreadsheet", + "depends": ["spreadsheet", "base_sparse_field", "bus"], + "data": [ + "security/security.xml", + "security/ir.model.access.csv", + "views/spreadsheet_spreadsheet.xml", + ], + "assets": { + "web.assets_backend": [ + "spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss", + "spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml", + "spreadsheet_oca/static/src/spreadsheet/spreadsheet_action.esm.js", + "spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js", + ], + "spreadsheet.o_spreadsheet": [ + "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml", + "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js", + "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js", + "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js", + ], + }, +} diff --git a/spreadsheet_oca/models/__init__.py b/spreadsheet_oca/models/__init__.py new file mode 100644 index 00000000..ae532164 --- /dev/null +++ b/spreadsheet_oca/models/__init__.py @@ -0,0 +1,3 @@ +from . import spreadsheet_abstract +from . import spreadsheet_spreadsheet +from . import spreadsheet_oca_revision diff --git a/spreadsheet_oca/models/spreadsheet_abstract.py b/spreadsheet_oca/models/spreadsheet_abstract.py new file mode 100644 index 00000000..9f497c88 --- /dev/null +++ b/spreadsheet_oca/models/spreadsheet_abstract.py @@ -0,0 +1,76 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json + +from odoo import fields, models +from odoo.exceptions import AccessError + + +class SpreadsheetAbstract(models.AbstractModel): + _name = "spreadsheet.abstract" + _description = "Spreadsheet abstract for inheritance" + + name = fields.Char(required=True) + spreadsheet_raw = fields.Serialized() + spreadsheet_revision_ids = fields.One2many( + "spreadsheet.oca.revision", + inverse_name="res_id", + domain=lambda r: [("model", "=", r._name)], + ) + + def get_spreadsheet_data(self): + self.ensure_one() + mode = "normal" + try: + self.check_access_rights("write") + self.check_access_rule("write") + except AccessError: + mode = "readonly" + return { + "name": self.name, + "spreadsheet_raw": self.spreadsheet_raw, + "revisions": [ + { + "type": revision.type, + "clientId": revision.client_id, + "nextRevisionId": revision.next_revision_id, + "serverRevisionId": revision.server_revision_id, + "commands": json.loads(revision.commands), + } + for revision in self.spreadsheet_revision_ids + ], + "mode": mode, + } + + def open_spreadsheet(self): + self.ensure_one() + return { + "type": "ir.actions.client", + "tag": "action_spreadsheet_oca", + "params": {"spreadsheet_id": self.id, "model": self._name}, + } + + def send_spreadsheet_message(self, message): + self.ensure_one() + channel = "spreadsheet_oca;%s;%s" % (self._name, self.id) + message.update({"res_model": self._name, "res_id": self.id}) + if message["type"] in ["REVISION_UNDONE", "REMOTE_REVISION", "REVISION_REDONE"]: + self.env["spreadsheet.oca.revision"].create( + { + "model": self._name, + "res_id": self.id, + "type": message["type"], + "client_id": message["clientId"], + "next_revision_id": message["nextRevisionId"], + "server_revision_id": message["serverRevisionId"], + "commands": json.dumps(message["commands"]), + } + ) + self.env["bus.bus"]._sendone(channel, "spreadsheet_oca", message) + return True + + def write(self, vals): + if "spreadsheet_raw" in vals: + self.spreadsheet_revision_ids.unlink() + return super().write(vals) diff --git a/spreadsheet_oca/models/spreadsheet_oca_revision.py b/spreadsheet_oca/models/spreadsheet_oca_revision.py new file mode 100644 index 00000000..66197d9b --- /dev/null +++ b/spreadsheet_oca/models/spreadsheet_oca_revision.py @@ -0,0 +1,18 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SpreadsheetOcaRevision(models.Model): + + _name = "spreadsheet.oca.revision" + _description = "Spreadsheet Oca Revision" # TODO + + model = fields.Char(required=True) + res_id = fields.Integer(required=True, index=True) + type = fields.Char() + client_id = fields.Char() + server_revision_id = fields.Char() + next_revision_id = fields.Char() + commands = fields.Char() diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet.py b/spreadsheet_oca/models/spreadsheet_spreadsheet.py new file mode 100644 index 00000000..88b57380 --- /dev/null +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet.py @@ -0,0 +1,57 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import base64 +import json + +from odoo import _, api, fields, models + + +class SpreadsheetSpreadsheet(models.Model): + _name = "spreadsheet.spreadsheet" + _inherit = "spreadsheet.abstract" + _description = "Spreadsheet" + + data = fields.Binary() + filename = fields.Char(compute="_compute_filename") + spreadsheet_raw = fields.Serialized( + compute="_compute_spreadsheet_raw", inverse="_inverse_spreadsheet_raw" + ) + owner_id = fields.Many2one( + "res.users", required=True, default=lambda r: r.env.user.id + ) + contributor_ids = fields.Many2many( + "res.users", + relation="spreadsheet_contributor", + column1="spreadsheet_id", + column2="user_id", + string="Contributors", + ) + reader_ids = fields.Many2many( + "res.users", + relation="spreadsheet_reader", + column1="spreadsheet_id", + column2="user_id", + string="Readers", + ) + + @api.depends("name") + def _compute_filename(self): + for record in self: + record.filename = "%s.json" % (self.name or _("Unnamed")) + + @api.depends("data") + def _compute_spreadsheet_raw(self): + for dashboard in self: + if dashboard.data: + dashboard.spreadsheet_raw = json.loads( + base64.decodebytes(dashboard.data).decode("UTF-8") + ) + else: + dashboard.spreadsheet_raw = {} + + def _inverse_spreadsheet_raw(self): + for record in self: + record.data = base64.encodebytes( + json.dumps(record.spreadsheet_raw).encode("UTF-8") + ) diff --git a/spreadsheet_oca/readme/CONTRIBUTORS.rst b/spreadsheet_oca/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..85004765 --- /dev/null +++ b/spreadsheet_oca/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/spreadsheet_oca/readme/DESCRIPTION.rst b/spreadsheet_oca/readme/DESCRIPTION.rst new file mode 100644 index 00000000..7fbd3af7 --- /dev/null +++ b/spreadsheet_oca/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a functionality for adding and editing Spreadsheets using Odoo CE. diff --git a/spreadsheet_oca/security/ir.model.access.csv b/spreadsheet_oca/security/ir.model.access.csv new file mode 100644 index 00000000..40c44338 --- /dev/null +++ b/spreadsheet_oca/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_spreadsheet_spreadsheet,access_spreadsheet_spreadsheet,model_spreadsheet_spreadsheet,group_user,1,1,1,1 +access_spreadsheet_oca_revision,access_spreadsheet_oca_revision,model_spreadsheet_oca_revision,base.group_user,1,1,1,1 diff --git a/spreadsheet_oca/security/security.xml b/spreadsheet_oca/security/security.xml new file mode 100644 index 00000000..ef8d22a4 --- /dev/null +++ b/spreadsheet_oca/security/security.xml @@ -0,0 +1,52 @@ + + + + + + Spreadsheet + 99 + + + User + + + + Manager + + + + + + Spreadsheet Owner + + + [('owner_id','=', user.id)] + + + Spreadsheet Contributor + + + [('contributor_ids','=', user.id)] + + + + + Spreadsheet Reader + + + [('reader_ids','=', user.id)] + + + + + + Spreadsheet Manager + + + [(1,'=', 1)] + + diff --git a/spreadsheet_oca/static/description/icon.png b/spreadsheet_oca/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..34b37abace243eb7b653213f3035ed5669f9e592 GIT binary patch literal 4207 zcmV-#5RmVQP)7lIG~0Yfsui*3zDz}QD#Jz0HPrQB2kne z3P#Kjei#B#5+Vxza6zIZDnURQK*A;?Fbg>IX6C)=e*Io|*XECYy;Rq^-KV>%dU;dl z&&>PkoO5sW{p!}KbI+}kP$&29y8ZH~owzO{M~+owC2iZbRDT?j^G^V9BY;Hcd9v+B z8%*0l{0(GDvQ68{8n*tXDHpbF9lHGqNBehwyhYQDh0i1uZ4&_4wuO>if??~hV6|+N z{X>zq)Jah8g104qclLRBvGxBqkRU;oRH%qRkyM9P3B^BUCw5+N>#_%@RRBmDi+*dv zK4Zu9yBO2|hrBu2ywMOFI4mJ)$S8A=k>_Bpe8d+s!z-Q!uvxly*X@^&m&Skb-qhQG zWV;;o(@BJwKUhqPVYRv*Dx#Mu$9!Yek9SPJw+66x1KE%QlbT81=ftAr=S;=F0$Nu2HW$9Ads>vfQpw7dsbX zUBKj43Lyz*Hzv1I5MkZuT!;mavG4yO31%lIdvz3K=Rz!atnDB$B*E;$Itl_q63iZ~ z;~+33!R)|11%V+61|Rbr1coFSY|NJ+FeJg?V!j1|AqfT(^EC(zNicYr??GTlg2BQ9 z2?9eB3=S4p5EznRFt9*_z>oy}j|CnCh9u~3tSdoaNP_;w)XE=?<-?s|aa%*mP6MEK z*|bw~E^y$6$Q?esT|ey7YGxbl^v{q=$f^?n{QLbo!BoE-895W*S$PjmT(Z%1!lAfD zH%qwl!<+C)WEX(mk-(QAP|q1SussV+O}cbLp(Ub3q1q7#HjqJ}o-=T8dk&Uvfxgp+ zA`+YU#Re(}EM@iT-~#}xkOJ+9ZQ6qy1XiwmTequQnJvTFkYO5lXZPE##_NR+3*9m| zJr9fKEOz1V?tTY`sdwhIPL_|XL@JSTUs}*b@HeMgRa0U;lG_ z{@BwThjxwa#3lEh*TlAYpX=MW@tj+*b@TO<7XSkk1nM~h2Vc$B2EVH4GG$9Uc>;k4 z!j_{YP-L}0gJhq%ZS;E(sOJofZ_mNf>3dg5f{Ht4pP9BnVk&p4C}j;yyjC9kW_pd1 zSQG;wc>M}D!2&>uySNGfh>t{}Y4JLHsu?Ol)9|-U-!qa+;%=B!ZJrpCqx5<8^8PPL z5-$kUb0)@LD@Xf{C)$bx(K*#Hqm7K38xsA1k(7#9)cHK!(ff4--H6Un+1bHn?aC@m zV4$}oXt^9*KllLu*_9Hut=FeX?$pX`h;8fPcF?QG!KOi=o-=W9d$#tRU(xF`5_lPm z!<_`eAh2@f+qzAk6nBJ}wzHiCWRS{jquZIlQr4&qev{tLCKAy8c(!~JF#UBAbJYau zIkOz?mn@gj;Yb2cv&aCDz!3yi2Y=?u=MF|MNzjdZ^K2$Tl>kQ0tR{I{8TE_=B9|cv zyaj*#YasZTmEeyXX}PrdLY zzr?V~viM1BH)6wTI*{#U5UAGuIV+2SzVqJa$;AVeho>0hkySN_D$?< zYTF72fFl==x(Kj8JBArPB0`7^D;A|%WrAL`|mjo&`rF*#@G|JH01ORWFH~|TfA%*t8ERMoR zvZ*bJHco{KUDKCYr?s>#x6=F`A*yNYX%eVf6Br-~lt|r)drUM@B1dG%X6;}*whrAU z{{8rlAz5@fBfTU+Z8?~pk2p|IR{~kK0(XP75*Rb$Sf?L{Wu?_^+cv|TnZN-g0rx}) znFLnJLi9gFxO?hBVfC5QgKF7i8OwA-b3WEig2^HOH(UI`#Uy&4@I-sK^so=s0GKkR2B{|#`n*9pbej5 za8+iFuzzOJ#QuLBa$NbM71l=Si{)Su31X2LHjSRu@+7>-scXIvnD0~~h0~8bGcf-E zAn6hcZ&-+zG{j@><3*zY-O}9$>ck5P)CLW2BnYJ~u?!0%A1%X^mpv-fx$D{6@cfSF z9GIVL0=_N>hti(p{yPP8n%INcAVDq%%U#L;heC>N(mSz8UG~#P2SH#^%fW~8hj7ET zE!DrtVksuLX~Sk*aoW``{N_il!}#QQQ`=TG3jlD-h2O#nt2Q{WJqLE<&d0w^>T?3L zO6ve{;b$(!xhG%XI@lja`hQsbz%8J9xuH0w~lHI8#M9hbtjWY?3M)J-6H&XPhb~r2kbO2JIBDY z^}WWREua40D*cQJRF{H>nSc^GBC%f6CXy;+MHM@$3@IwN@6QPes(t_^DmwwnC*4p> zB{nSt_kTa01XM52`WzArttr<8($lhAUsNKd3TgtA%VS6t+N(Px2b-)31ky()T^J>; zO2pIz-G6?jlfIgLdQV`mBxuK0wC{i;e(Y#==}{PUHP^Ls{GtuG^ix*?b*ig|*D@Mx zU;GOK`e+1X(YKnwkOX}3T2$h<_*N6x?Lb5O)FIhzwu#t%mre1ATuc!W(68lSS0>Q! zN40J|UUDDRypTYaWGu-n6CO{;(zSNk;^9fhClYjJIk+2-mtJZN{eE<7#~uGx#Ix0xgdHDOy+sR|?N>quG_|sdSg=M#1F>{Nv&sxO24Se;&wfOUOFPF7jOcGab+=9za zx*7nW%8};EK1yFN2g{O-bUed8nNDOVmTIlkp(wI~bUe+{jj3_ORQLCVx*-F#92`n} zLjKl)W&-_A{e~hGe)^oU^(hm`&82fluPoB9S+kW>`0KhpL&&LDT{!FO* z<$KS^>mO`KYPE*B$s<^O6N%R#u=!`>y6~t*ntIC8dGXh|Z7;>kOwjtGn~ATq2XGR&{_^HL}1wZ@Q8Y-*c`(TS*vC@~q@vT`0kRKHk} z=$r^Nc+VO5L4uj(VA{D0^E*$_BU>+NW8cN&?ZxZuKsxHXOKV5S3yn9W_v&i)b0&}_ z8P9y}IhS7L*rN0j@)!Udnx4R9DF*;Zs2b)b=LvQ9<@Q3iN&tYU62r*Qe4*~a{C-Ru z1w`ctMp6s#)}A+USN4XM=fcGrmV@Ej?LYwal`VB{%~t%HNhUFjOk$X&J3qC6?YHqU z(X>oomxG-%Koxa&y%pCA?Fb*#gz@}g8&bGjF# zl`mR5@Ph=hP$48i&q$CS)yQd|60aoaU^$rCi9Q<0K_WqBeG=NzIC~I9c)-iS%ue*t zKn?;4Dudt5)^8FJyMsd#^nwJL(IgT?z!x+LWN!oM#Wo~CMJ+R0yYjtE=bhO5upI2g zHY7oMo#vSKMS4Mzpl)|C(@{tQ-$;-i)!GX9f*?V|w}Y9ELK1i;L1plp`RfJ=h?hk( z9fc(5m;`B$0iT~F5bO?SItoe9HVM+BNoY%BLfdYWK(6mxLyvimLK3h^kQ&vhgWt@y zn*(kOVDBkRB~B>~v$m+aUpCcQDUUNCGhlDudrluU8~+C4xc{c(ZLhx74VH z#A5fJf_@-@Z2_`A;rXdD`z?z}FJ9fdj8*VHK@^%W_J7r0|K3 z(pX3WKWx+MwY~`WM3`ByuO z=Zvg*%G9I@NPrxbAt^xpNO8Axv)}daWiUv0Ts;!)*dHW7TM|R={b}UhpBCDRHkEMN zZTlj!%O9MwbQ^ZVm&eqE@<%JBUF>qP{Od<-HL~Vbt6;CQ4O^pn!u(0tweS2dZ}o2* z@rAW*VeQ(M)dJpQAi5v>#-caMxwtw9C_LG%E{|9#BaE<9Z=wtu@002ovPDHLk FV1lYu>i7Tv literal 0 HcmV?d00001 diff --git a/spreadsheet_oca/static/description/icon.svg b/spreadsheet_oca/static/description/icon.svg new file mode 100644 index 00000000..ba496774 --- /dev/null +++ b/spreadsheet_oca/static/description/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml new file mode 100644 index 00000000..a71c9910 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -0,0 +1,110 @@ + + + + +
+ + +
+
+ + + + + + + + name is required + + + + + + + + + + + + +
+
+
+ + + + + + + + + + +
+
+
+
+
diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js new file mode 100644 index 00000000..663b4631 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -0,0 +1,98 @@ +/** @odoo-module **/ + +import PivotDataSource from "@spreadsheet/pivot/pivot_data_source"; +import {SpreadsheetControlPanel} from "./spreadsheet_controlpanel.esm"; +import {SpreadsheetRenderer} from "./spreadsheet_renderer.esm"; +import {registry} from "@web/core/registry"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; +import {useService} from "@web/core/utils/hooks"; + +const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); +const actionRegistry = registry.category("actions"); +const {Component, onMounted, onWillStart, useSubEnv} = owl; + +export class ActionSpreadsheetOca extends Component { + setup() { + this.router = useService("router"); + this.orm = useService("orm"); + const params = this.props.action.params || this.props.action.context.params; + this.spreadsheetId = params.spreadsheet_id; + this.model = params.model || "spreadsheet.spreadsheet"; + this.import_data = params.import_data || {}; + onMounted(() => { + this.router.pushState({ + spreadsheet_id: this.spreadsheetId, + model: this.model, + }); + }); + onWillStart(async () => { + this.record = + (await this.orm.call( + this.model, + "get_spreadsheet_data", + [[this.spreadsheetId]], + {context: {bin_size: false}} + )) || {}; + }); + useSubEnv({ + saveRecord: this.saveRecord.bind(this), + importData: this.importData.bind(this), + }); + } + async saveRecord(data) { + if (this.record.mode === "readonly") { + return; + } + if (this.spreadsheetId) { + this.orm.call(this.model, "write", [this.spreadsheetId, data]); + } else { + this.spreadsheetId = await this.orm.call(this.model, "create", [data]); + this.router.pushState({spreadsheet_id: this.spreadsheetId}); + } + } + async importDataPivot(spreadsheet_model) { + const sheetId = spreadsheet_model.getters.getActiveSheetId(); + const dataSourceId = uuidGenerator.uuidv4(); + const pivot_info = { + metaData: { + colGroupBys: this.import_data.metaData.colGroupBys, + rowGroupBys: this.import_data.metaData.rowGroupBys, + activeMeasures: this.import_data.metaData.activeMeasures, + resModel: this.import_data.metaData.resModel, + }, + searchParams: this.import_data.searchParams, + }; + const dataSource = spreadsheet_model.config.dataSources.add( + dataSourceId, + PivotDataSource, + pivot_info + ); + await dataSource.load(); + const {cols, rows, measures} = dataSource.getTableStructure().export(); + const table = { + cols, + rows, + measures, + }; + spreadsheet_model.dispatch("INSERT_PIVOT", { + sheetId, + col: 0, + row: 0, + id: spreadsheet_model.getters.getNextPivotId(), + table, + dataSourceId, + definition: pivot_info, + }); + } + async importData(spreadsheet_model) { + if (this.import_data.mode === "pivot") { + await this.importDataPivot(spreadsheet_model); + } + } +} +ActionSpreadsheetOca.template = "spreadsheet_oca.ActionSpreadsheetOca"; +ActionSpreadsheetOca.components = { + SpreadsheetRenderer, + SpreadsheetControlPanel, +}; +actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, {force: true}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js new file mode 100644 index 00000000..52d23556 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js @@ -0,0 +1,41 @@ +/** @odoo-module **/ + +import {_lt, _t} from "web.core"; +import {Component} from "@odoo/owl"; +import {ControlPanel} from "@web/search/control_panel/control_panel"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; + +const {useState} = owl; +const {topbarMenuRegistry} = spreadsheet.registries; + +topbarMenuRegistry.add("file", {name: _t("File"), sequence: 10}); +topbarMenuRegistry.addChild("save", ["file"], { + name: _lt("Save"), + // Description: "Ctrl+S", // This is not working, so removing it from the view for now... + sequence: 10, + action: (env) => env.saveSpreadsheet(), +}); +export class SpreadsheetName extends Component { + setup() { + this.state = useState({ + name: this.props.name, + }); + } + _onNameChanged(ev) { + if (ev.target.value) { + this.env.saveRecord({name: ev.target.value}); + } + this.state.name = ev.target.value; + } +} +SpreadsheetName.template = "spreadsheet_oca.SpreadsheetName"; + +export class SpreadsheetControlPanel extends ControlPanel {} +SpreadsheetControlPanel.template = "spreadsheet_oca.SpreadsheetControlPanel"; +SpreadsheetControlPanel.props = { + ...ControlPanel.props, + record: Object, +}; +SpreadsheetControlPanel.components = { + SpreadsheetName, +}; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js new file mode 100644 index 00000000..6232ba2b --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js @@ -0,0 +1,113 @@ +/** @odoo-module **/ + +import {Component} from "@odoo/owl"; +import {DataSources} from "@spreadsheet/data_sources/data_sources"; +import {Field} from "@web/views/fields/field"; +import {loadSpreadsheetDependencies} from "@spreadsheet/helpers/helpers"; +import {migrate} from "@spreadsheet/o_spreadsheet/migration"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; +import {useService} from "@web/core/utils/hooks"; +import {useSetupAction} from "@web/webclient/actions/action_hook"; + +const {Spreadsheet, Model} = spreadsheet; +const {useSubEnv, onWillStart} = owl; +const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); + +class SpreadsheetTransportService { + constructor(orm, bus_service, model, res_id) { + this.orm = orm; + this.bus_service = bus_service; + this.model = model; + this.res_id = res_id; + this.channel = "spreadsheet_oca;" + this.model + ";" + this.res_id; + this.bus_service.addChannel(this.channel); + this.bus_service.addEventListener( + "notification", + this.onNotification.bind(this) + ); + this.listeners = []; + } + onNotification({detail: notifications}) { + for (const {payload, type} of notifications) { + if ( + type === "spreadsheet_oca" && + payload.res_model === this.model && + payload.res_id === this.res_id + ) { + // What shall we do if no callback is defined (empty until onNewMessage...) :/ + for (const {callback} of this.listeners) { + callback(payload); + } + } + } + } + sendMessage(message) { + this.orm.call(this.model, "send_spreadsheet_message", [[this.res_id], message]); + } + onNewMessage(id, callback) { + this.listeners.push({id, callback}); + } + leave(id) { + this.listeners = this.listeners.filter((listener) => listener.id !== id); + } +} + +export class SpreadsheetRenderer extends Component { + setup() { + this.orm = useService("orm"); + this.bus_service = useService("bus_service"); + this.user = useService("user"); + const dataSources = new DataSources(this.orm); + this.spreadsheet_model = new Model( + migrate(this.props.record.spreadsheet_raw), + { + evalContext: {env: this.env, orm: this.orm}, + transportService: new SpreadsheetTransportService( + this.orm, + this.bus_service, + this.props.model, + this.props.res_id + ), + client: { + id: uuidGenerator.uuidv4(), + name: this.user.name, + }, + mode: this.props.record.mode, + dataSources, + }, + this.props.record.revisions + ); + useSubEnv({ + saveSpreadsheet: this.onSpreadsheetSaved.bind(this), + }); + onWillStart(async () => { + await loadSpreadsheetDependencies(); + await dataSources.waitForAllLoaded(); + await this.env.importData(this.spreadsheet_model); + }); + useSetupAction({ + beforeLeave: () => this.onSpreadsheetSaved(), + }); + dataSources.addEventListener("data-source-updated", () => { + const sheetId = this.spreadsheet_model.getters.getActiveSheetId(); + this.spreadsheet_model.dispatch("EVALUATE_CELLS", {sheetId}); + }); + } + onSpreadsheetSaved() { + const data = this.spreadsheet_model.exportData(); + this.env.saveRecord({spreadsheet_raw: data}); + this.spreadsheet_model.leaveSession(); + } +} + +SpreadsheetRenderer.template = "spreadsheet_oca.SpreadsheetRenderer"; +SpreadsheetRenderer.components = { + Spreadsheet, + Field, +}; +SpreadsheetRenderer.props = { + record: Object, + res_id: {type: Number, optional: true}, + model: String, + importData: {type: Function, optional: true}, +}; diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js new file mode 100644 index 00000000..66b0310f --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js @@ -0,0 +1,27 @@ +/** @odoo-module **/ +import {PivotController} from "@web/views/pivot/pivot_controller"; + +import {patch} from "web.utils"; + +patch( + PivotController.prototype, + "spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js", + { + onSpreadsheetButtonClicked() { + this.actionService.doAction({ + type: "ir.actions.client", + tag: "action_spreadsheet_oca", + params: { + model: "spreadsheet.spreadsheet", + import_data: { + mode: "pivot", + metaData: JSON.parse(JSON.stringify(this.model.metaData)), + searchParams: JSON.parse( + JSON.stringify(this.model.searchParams) + ), + }, + }, + }); + }, + } +); diff --git a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss new file mode 100644 index 00000000..33e55449 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss @@ -0,0 +1,23 @@ +.o_spreadsheet_oca_container { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + flex-flow: column; + height: 100%; + .o_spreadsheet_oca_name { + border: none; + padding: 0px 5px 0px 2px; + color: $breadcrumb-active-color; + border-color: var(--o-input-border-color); + &:focus { + border: $input-border-width solid var(--o-input-border-color); + border-width: 0 0 $input-border-width 0; + @include print-variable(o-input-border-color, $o-brand-primary); + @include print-variable(o-caret-color, $o-brand-primary); + } + } + .o_spreadsheet_oca_name_warning { + font-size: 0.8em; + } +} diff --git a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml new file mode 100644 index 00000000..fee6b44c --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml @@ -0,0 +1,17 @@ + + + + + + + + + { await loadSpreadsheetDependencies(); @@ -93,17 +101,32 @@ export class SpreadsheetRenderer extends Component { this.spreadsheet_model.dispatch("EVALUATE_CELLS", {sheetId}); }); } + closeDialog() { + this.state.dialogDisplayed = false; + this.state.dialogTitle = "Spreadsheet"; + this.state.dialogContent = undefined; + } onSpreadsheetSaved() { const data = this.spreadsheet_model.exportData(); this.env.saveRecord({spreadsheet_raw: data}); this.spreadsheet_model.leaveSession(); } + editText(title, callback, options) { + this.state.dialogContent = options.placeholder; + this.state.dialogTitle = title; + this.state.dialogDisplayed = true; + this.confirmDialog = () => { + callback(this.state.dialogContent); + this.closeDialog(); + }; + } } SpreadsheetRenderer.template = "spreadsheet_oca.SpreadsheetRenderer"; SpreadsheetRenderer.components = { Spreadsheet, Field, + Dialog, }; SpreadsheetRenderer.props = { record: Object, From b6318225be1059f6e80dbe5e59258ff774e35811 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Fri, 7 Apr 2023 15:25:10 +0200 Subject: [PATCH 014/235] [IMP] spreadsheet_oca: Allow to edit filters --- spreadsheet_oca/__manifest__.py | 1 + .../src/spreadsheet/bundle/filter.esm.js | 175 ++++++++++++++++++ .../src/spreadsheet/bundle/spreadsheet.xml | 157 ++++++++++++++++ .../bundle/spreadsheet_controlpanel.esm.js | 10 - .../static/src/spreadsheet/spreadsheet.scss | 24 +++ 5 files changed, 357 insertions(+), 10 deletions(-) create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index faec7004..4793ca98 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -27,6 +27,7 @@ ], "spreadsheet.o_spreadsheet": [ "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml", + "spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js", diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js new file mode 100644 index 00000000..f7bb6e3d --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -0,0 +1,175 @@ +/** @odoo-module **/ + +import {Component, onWillStart, useState} from "@odoo/owl"; +import {_lt, _t} from "web.core"; + +import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; +import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; +import {ModelSelector} from "@web/core/model_selector/model_selector"; +import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; +import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; +import {useService} from "@web/core/utils/hooks"; + +const {topbarMenuRegistry} = spreadsheet.registries; +const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); + +topbarMenuRegistry.add("file", {name: _t("File"), sequence: 10}); +topbarMenuRegistry.addChild("filters", ["file"], { + name: _t("Filters"), + sequence: 70, + action: (env) => env.openSidePanel("FilterPanel", {}), +}); +topbarMenuRegistry.addChild("save", ["file"], { + name: _t("Save"), + // Description: "Ctrl+S", // This is not working, so removing it from the view for now... + sequence: 10, + action: (env) => env.saveSpreadsheet(), +}); + +const {sidePanelRegistry} = spreadsheet.registries; + +export class FilterPanel extends Component { + onEditFilter(filter) { + this.env.openSidePanel("EditFilterPanel", {filter}); + } + onAddFilter(type) { + this.env.openSidePanel("EditFilterPanel", {filter: {type: type}}); + } +} + +FilterPanel.template = "spreadsheet_oca.FilterPanel"; +FilterPanel.components = { + FilterValue, +}; + +sidePanelRegistry.add("FilterPanel", { + title: "Filters", + Body: FilterPanel, +}); + +export class EditFilterPanel extends Component { + setup() { + this.filterId = this.props.filter; + this.orm = useService("orm"); + this.state = useState({ + label: this.props.filter.label, + type: this.props.filter.type, + defaultValue: this.props.filter.defaultValue, + defaultsToCurrentPeriod: this.props.filter.defaultsToCurrentPeriod, + rangeType: this.props.filter.rangeType || "year", + modelName: {technical: this.props.filter.modelName, label: null}, + objects: {}, + }); + this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; + onWillStart(this.willStart.bind(this)); + } + async willStart() { + if (this.state.modelName.technical !== undefined) { + const modelLabel = await this.orm.call("ir.model", "display_name_for", [ + [this.state.modelName.technical], + ]); + this.state.modelName.label = modelLabel[0] && modelLabel[0].display_name; + } + var ModelFields = []; + for (var [objectType, objectClass] of Object.entries( + globalFiltersFieldMatchers + )) { + for (const objectId of objectClass.geIds()) { + var fields = objectClass.getFields(objectId); + this.state.objects[objectType + "_" + objectId] = { + id: objectType + "_" + objectId, + objectId: objectId, + name: objectClass.getDisplayName(objectId), + tag: await objectClass.getTag(objectId), + fieldMatch: + objectClass.getFieldMatching(objectId, this.props.filter.id) || + {}, + fields: fields, + model: objectClass.getModel(objectId), + }; + ModelFields.push(fields); + } + } + console.log(this.state.objects); + this.models = [ + ...new Set( + ModelFields.map((field_items) => Object.values(field_items)) + .flat() + .filter((field) => field.relation) + .map((field) => field.relation) + ), + ]; + } + get dateRangeTypes() { + return [ + {type: "year", description: _t("Year")}, + {type: "quarter", description: _t("Quarter")}, + {type: "month", description: _t("Month")}, + {type: "relative", description: _t("Relative Period")}, + ]; + } + get dateOffset() { + return [ + {value: 0, name: ""}, + {value: -1, name: _lt("Previous")}, + {value: -2, name: _lt("Before Previous")}, + {value: 1, name: _lt("Next")}, + {value: 2, name: _lt("After next")}, + ]; + } + onChangeFieldMatchOffset(object, ev) { + this.state.objects[object.id].fieldMatch.offset = parseInt(ev.target.value, 10); + } + onModelSelected(ev) { + this.state.modelName.technical = ev.technical; + this.state.modelName.label = ev.label; + } + onDateRangeChange(ev) { + this.state.rangeType = ev.target.value; + } + onSave() { + const action = this.props.filter.id + ? "EDIT_GLOBAL_FILTER" + : "ADD_GLOBAL_FILTER"; + this.env.openSidePanel("FilterPanel", {}); + + var filter = { + id: this.props.filter.id || uuidGenerator.uuidv4(), + type: this.state.type, + label: this.state.label, + defaultValue: this.state.defaultValue, + rangeType: this.state.rangeType, + defaultsToCurrentPeriod: this.state.defaultsToCurrentPeriod, + modelName: this.state.modelName.technical, + }; + var filterMatching = {}; + Object.values(this.state.objects).forEach((object) => { + filterMatching[object.type] = filterMatching[object.type] || {}; + filterMatching[object.type][object.id] = {...object.fieldMatch}; + }); + this.env.model.dispatch(action, {id: filter.id, filter, ...filterMatching}); + + this.env.openSidePanel("FilterPanel", {}); + } + onCancel() { + this.env.openSidePanel("FilterPanel", {}); + } + onRemove() { + if (this.props.filter.id) { + this.env.model.dispatch("REMOVE_GLOBAL_FILTER", {id: this.props.filter.id}); + } + this.env.openSidePanel("FilterPanel", {}); + } + onFieldMatchUpdate(object, name) { + this.state.objects[object.id].fieldMatch.chain = name.chain; + } +} + +EditFilterPanel.template = "spreadsheet_oca.EditFilterPanel"; +EditFilterPanel.components = {ModelSelector, ModelFieldSelector}; + +sidePanelRegistry.add("EditFilterPanel", { + title: "Edit Filter", + Body: EditFilterPanel, +}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 62433e08..bb6d1cfe 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -12,7 +12,164 @@ /> + +
+
+ +
+
+ + +
+
+
+ + + +
+
+ +
+
+ Label +
+
+ +
+
+
+
Time range
+
+ +
+
+
+
Default value
+
+ + +
+
+ +
+ +
+
+
Related model
+
+ +
+
+
+
+ - +
+
+ +
+ +
+ +
+
+
+ + + +
+
env.saveSpreadsheet(), -}); export class SpreadsheetName extends Component { setup() { this.state = useState({ diff --git a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss index 33e55449..a36e2732 100644 --- a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss +++ b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss @@ -20,4 +20,28 @@ .o_spreadsheet_oca_name_warning { font-size: 0.8em; } + .o_spreadsheet_oca_filter { + padding: 16px; + .spreadsheet_oca_filter_label { + font-weight: bold; + } + .spreadsheet_oca_filter_value { + display: flex; + .o_field_widget { + width: 100%; + .o_field_tags { + width: 100%; + } + } + .o_field_selector { + width: 100%; + } + .spreadsheet_oca_filter_value_edit { + width: 15px; + margin-left: 1rem; + padding: 0; + cursor: pointer; + } + } + } } From a7cbef4e97d99b5064dc646c135c8e16d68907f8 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 9 May 2023 22:36:54 +0000 Subject: [PATCH 015/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 144 ++++++++++++++++++++++- 1 file changed, 141 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 4d95a921..c23fa6c2 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -13,11 +13,32 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Add date" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Add relation" +msgstr "" + #. module: spreadsheet_oca #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet msgid "Add sheet to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Add text" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml:0 @@ -28,7 +49,32 @@ msgid "Add to spreadsheet" msgstr "" #. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "After next" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Automatically filter on the current period" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Before Previous" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "" @@ -55,6 +101,13 @@ msgstr "" msgid "Commands" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Confirm" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids msgid "Contributors" @@ -86,6 +139,13 @@ msgstr "" msgid "Data" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Default value" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name @@ -102,7 +162,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #, python-format msgid "File" msgstr "" @@ -112,6 +172,13 @@ msgstr "" msgid "Filename" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Filters" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__group_ids msgid "Group" @@ -145,6 +212,13 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Label" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision____last_update #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet____last_update @@ -184,6 +258,13 @@ msgstr "" msgid "Model" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Month" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name @@ -193,6 +274,13 @@ msgstr "" msgid "Name" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Next" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" @@ -208,11 +296,46 @@ msgstr "" msgid "Owner" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Previous" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Quarter" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__reader_ids msgid "Readers" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Related model" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Relative Period" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Remove" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__res_id msgid "Res" @@ -220,7 +343,8 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #, python-format msgid "Save" msgstr "" @@ -270,14 +394,21 @@ msgstr "" msgid "Spreadsheets" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Time range" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript #. odoo-python +#. odoo-javascript #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #, python-format @@ -289,6 +420,13 @@ msgstr "" msgid "User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format +msgid "Year" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 From 7a277764007b639334419ff38db302da1eeba361 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 9 May 2023 22:41:37 +0000 Subject: [PATCH 016/235] spreadsheet_oca 16.0.1.1.1 --- spreadsheet_oca/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 4793ca98..0469625d 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "16.0.1.1.0", + "version": "16.0.1.1.1", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", From 78b998de549d44c4cee221092fe061674a48b9db Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 9 May 2023 22:44:10 +0000 Subject: [PATCH 017/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index c23fa6c2..a033ba85 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -407,8 +407,8 @@ msgid "Type" msgstr "" #. module: spreadsheet_oca -#. odoo-python #. odoo-javascript +#. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #, python-format From 9c2ecca90484691e600cf5ba40af0180956a35e7 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Tue, 6 Jun 2023 18:06:10 +0200 Subject: [PATCH 018/235] [FIX] spreadsheet_oca: Filters where failing --- spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js | 3 +-- spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index f7bb6e3d..954f0f83 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -91,7 +91,6 @@ export class EditFilterPanel extends Component { ModelFields.push(fields); } } - console.log(this.state.objects); this.models = [ ...new Set( ModelFields.map((field_items) => Object.values(field_items)) @@ -162,7 +161,7 @@ export class EditFilterPanel extends Component { this.env.openSidePanel("FilterPanel", {}); } onFieldMatchUpdate(object, name) { - this.state.objects[object.id].fieldMatch.chain = name.chain; + this.state.objects[object.id].fieldMatch.chain = name; } } diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index bb6d1cfe..13444b02 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -143,6 +143,7 @@ resModel="object.model" readonly="false" isDebugMode="!!env.debug" + t-on-change="() => this.onChangeFieldSelector(ev)" update="(name) => this.onFieldMatchUpdate(object, name)" /> From 2334364e052c90ccf2aa678dc6a5b09c0089f5a6 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 7 Jun 2023 15:08:49 +0200 Subject: [PATCH 019/235] [IMP] spreadsheet_oca: Alloe to edit Pivot data --- spreadsheet_oca/__manifest__.py | 1 + .../bundle/filter_panel_datasources.esm.js | 123 ++++++++++++++++++ .../src/spreadsheet/bundle/spreadsheet.xml | 55 ++++++++ .../static/src/spreadsheet/spreadsheet.scss | 13 ++ 4 files changed, 192 insertions(+) create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 0469625d..a683edc9 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -28,6 +28,7 @@ "spreadsheet.o_spreadsheet": [ "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml", "spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js", + "spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js", diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js new file mode 100644 index 00000000..ebe46d56 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -0,0 +1,123 @@ +/** @odoo-module **/ + +import {Component, onWillStart, onWillUpdateProps} from "@odoo/owl"; +import {Domain} from "@web/core/domain"; +import {DomainSelector} from "@web/core/domain_selector/domain_selector"; +import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; +import {_t} from "web.core"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; +import {time_to_str} from "web.time"; +import {useService} from "@web/core/utils/hooks"; + +const {sidePanelRegistry, topbarMenuRegistry} = spreadsheet.registries; +const {createFullMenuItem} = spreadsheet.helpers; + +topbarMenuRegistry.addChild("data_sources", ["data"], (env) => { + const children = env.model.getters.getPivotIds().map((pivotId, index) => + createFullMenuItem(`data_source_pivot_ ${pivotId}`, { + name: env.model.getters.getPivotDisplayName(pivotId), + sequence: 100, + action: (child_env) => { + child_env.model.dispatch("SELECT_PIVOT", { + pivotId: pivotId, + }); + child_env.openSidePanel("PivotPanel", {}); + }, + icon: "fa fa-table", + separator: index === env.model.getters.getPivotIds().length - 1, + }) + ); + return children.concat([ + createFullMenuItem(`refresh_all_data`, { + name: _t("Refresh all data"), + sequence: 110, + action: (child_env) => { + child_env.model.dispatch("REFRESH_ALL_DATA_SOURCES"); + }, + separator: true, + }), + ]); +}); + +export class PivotPanelDisplay extends Component { + setup() { + this.dialog = useService("dialog"); + onWillStart(this.modelData.bind(this)); + onWillUpdateProps(this.modelData.bind(this)); + } + async modelData() { + this.PivotDataSource = await this.env.model.getters.getAsyncPivotDataSource( + this.props.pivotId + ); + this.modelLabel = await this.PivotDataSource.getModelLabel(); + } + get domain() { + return new Domain(this.props.pivotDefinition.domain).toString(); + } + get pivotDimensions() { + return [ + ...this.props.pivotDefinition.rowGroupBys, + ...this.props.pivotDefinition.colGroupBys, + ].map((fieldName) => this.PivotDataSource.getFormattedGroupBy(fieldName)); + } + get sortInformation() { + const sortedColumn = this.props.pivotDefinition.sortedColumn; + const orderTranslate = + sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); + const GroupByDisplayLabel = this.PivotDataSource.getGroupByDisplayLabel( + "measure", + sortedColumn.measure + ); + return `${GroupByDisplayLabel} (${orderTranslate})`; + } + get lastUpdate() { + const lastUpdate = this.PivotDataSource.lastUpdate; + if (lastUpdate) { + return time_to_str(new Date(lastUpdate)); + } + return _t("not updated"); + } + editDomain() { + this.dialog.add(DomainSelectorDialog, { + resModel: this.props.pivotDefinition.model, + initialValue: this.domain, + readonly: false, + isDebugMode: Boolean(this.env.debug), + onSelected: this.onSelectDomain.bind(this), + }); + } + onSelectDomain(domain) { + this.env.model.dispatch("UPDATE_ODOO_PIVOT_DOMAIN", { + pivotId: this.props.pivotId, + domain: new Domain(domain).toList(), + }); + } +} + +PivotPanelDisplay.template = "spreadsheet_oca.PivotPanelDisplay"; +PivotPanelDisplay.components = { + DomainSelector, +}; +PivotPanelDisplay.properties = { + pivotId: String, + pivotDefinition: Object, +}; + +export class PivotPanel extends Component { + get pivotId() { + return this.env.model.getters.getSelectedPivotId(); + } + get pivotDefinition() { + return this.env.model.getters.getPivotDefinition(this.pivotId); + } +} + +PivotPanel.template = "spreadsheet_oca.PivotPanel"; +PivotPanel.components = { + PivotPanelDisplay, +}; + +sidePanelRegistry.add("PivotPanel", { + title: "Pivot table", + Body: PivotPanel, +}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 13444b02..e7df314b 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -12,6 +12,61 @@ /> + + + + +
+
+
Pivot name
+ +
+
+
Model
+
()
+
+
+
Domain
+ + +
+
+
Dimensions
+ +
+ +
+
+
Sorting
+
+
+
+
Measures
+ +
+ +
+
+ Last updated at +
+
+ +
Date: Sat, 10 Jun 2023 15:46:20 +0200 Subject: [PATCH 020/235] [IMP] spreadsheet_oca: Allow to import lists --- spreadsheet_oca/__manifest__.py | 2 + .../bundle/spreadsheet_action.esm.js | 48 ++++++++++++++- .../src/spreadsheet/list_controller.esm.js | 14 +++++ .../src/spreadsheet/list_renderer.esm.js | 58 +++++++++++++++++++ .../static/src/spreadsheet/spreadsheet.xml | 15 +++++ 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index a683edc9..ca7f90ab 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -24,6 +24,8 @@ "spreadsheet_oca/static/src/spreadsheet/spreadsheet_action.esm.js", "spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js", "spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js", + "spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js", + "spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js", ], "spreadsheet.o_spreadsheet": [ "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml", diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js index 8b461110..71805fc1 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import ListDataSource from "@spreadsheet/list/list_data_source"; import PivotDataSource from "@spreadsheet/pivot/pivot_data_source"; import {SpreadsheetControlPanel} from "./spreadsheet_controlpanel.esm"; import {SpreadsheetRenderer} from "./spreadsheet_renderer.esm"; @@ -91,7 +92,7 @@ export class ActionSpreadsheetOca extends Component { definition, }); } - async importDataPivot(spreadsheet_model) { + importCreateOrReuseSheet(spreadsheet_model) { var sheetId = spreadsheet_model.getters.getActiveSheetId(); var row = 0; if (this.import_data.new === undefined && this.import_data.new_sheet) { @@ -128,6 +129,48 @@ export class ActionSpreadsheetOca extends Component { } row += 1; } + return {sheetId, row}; + } + async importDataList(spreadsheet_model) { + var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); + const dataSourceId = uuidGenerator.uuidv4(); + var list_info = { + metaData: { + resModel: this.import_data.metaData.model, + columns: this.import_data.metaData.columns.map((column) => column.name), + fields: this.import_data.metaData.fields, + }, + searchParams: { + domain: this.import_data.metaData.domain, + context: this.import_data.metaData.context, + orderBy: this.import_data.metaData.orderBy, + }, + name: this.import_data.metaData.name, + }; + const dataSource = spreadsheet_model.config.dataSources.add( + dataSourceId, + ListDataSource, + list_info + ); + await dataSource.load(); + spreadsheet_model.dispatch("INSERT_ODOO_LIST", { + sheetId, + col: 0, + row: row, + id: spreadsheet_model.getters.getNextListId(), + dataSourceId, + definition: list_info, + linesNumber: this.import_data.metaData.threshold, + columns: this.import_data.metaData.columns, + }); + const columns = []; + for (let col = 0; col < this.import_data.metaData.columns.length; col++) { + columns.push(col); + } + spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", {sheetId, cols: columns}); + } + async importDataPivot(spreadsheet_model) { + var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); const dataSourceId = uuidGenerator.uuidv4(); const pivot_info = { metaData: { @@ -167,6 +210,9 @@ export class ActionSpreadsheetOca extends Component { if (this.import_data.mode === "graph") { await this.importDataGraph(spreadsheet_model); } + if (this.import_data.mode === "list") { + await this.importDataList(spreadsheet_model); + } } } ActionSpreadsheetOca.template = "spreadsheet_oca.ActionSpreadsheetOca"; diff --git a/spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js new file mode 100644 index 00000000..0229b2dc --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js @@ -0,0 +1,14 @@ +/** @odoo-module **/ +import {ListController} from "@web/views/list/list_controller"; + +import {patch} from "web.utils"; + +patch( + ListController.prototype, + "spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js", + { + onSpreadsheetButtonClicked() { + this.env.bus.trigger("addListOnSpreadsheet"); + }, + } +); diff --git a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js new file mode 100644 index 00000000..b123e8f7 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js @@ -0,0 +1,58 @@ +/** @odoo-module **/ +import {useBus, useService} from "@web/core/utils/hooks"; +import {ListRenderer} from "@web/views/list/list_renderer"; +import {omit} from "@web/core/utils/objects"; +import {patch} from "web.utils"; + +patch( + ListRenderer.prototype, + "spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js", + { + setup() { + this._super(...arguments); + this.userService = useService("user"); + this.actionService = useService("action"); + useBus( + this.env.bus, + "addListOnSpreadsheet", + this.onAddListOnSpreadsheet.bind(this) + ); + }, + onAddListOnSpreadsheet() { + const model = this.env.model.root; + this.actionService.doAction( + "spreadsheet_oca.spreadsheet_spreadsheet_import_act_window", + { + additionalContext: { + default_name: this.env.config.getDisplayName(), + default_import_data: { + mode: "list", + metaData: { + model: model.resModel, + domain: model.domain, + orderBy: model.orderBy, + context: omit( + model.context, + ...Object.keys(this.userService.context) + ), + columns: this.getSpreadsheetColumns(), + fields: model.fields, + name: this.env.config.getDisplayName(), + threshold: Math.min(model.count, model.limit), + }, + }, + }, + } + ); + }, + getSpreadsheetColumns() { + const fields = this.env.model.root.fields; + return this.state.columns + .filter( + (col) => col.type === "field" && fields[col.name].type !== "binary" + // We want to avoid binary fields + ) + .map((col) => ({name: col.name, type: fields[col.name].type})); + }, + } +); diff --git a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml index 92f977c6..04f3d337 100644 --- a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml @@ -14,6 +14,21 @@ + + + + +
From 080879ee971ea44be63372b1ed3af242896827b0 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Sun, 9 Jul 2023 18:42:08 +0200 Subject: [PATCH 023/235] [FIX] spreadsheet_oca: Fix filters --- spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index 954f0f83..c4e41e2c 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -86,6 +86,7 @@ export class EditFilterPanel extends Component { objectClass.getFieldMatching(objectId, this.props.filter.id) || {}, fields: fields, + type: objectType, model: objectClass.getModel(objectId), }; ModelFields.push(fields); @@ -132,7 +133,6 @@ export class EditFilterPanel extends Component { ? "EDIT_GLOBAL_FILTER" : "ADD_GLOBAL_FILTER"; this.env.openSidePanel("FilterPanel", {}); - var filter = { id: this.props.filter.id || uuidGenerator.uuidv4(), type: this.state.type, @@ -145,7 +145,7 @@ export class EditFilterPanel extends Component { var filterMatching = {}; Object.values(this.state.objects).forEach((object) => { filterMatching[object.type] = filterMatching[object.type] || {}; - filterMatching[object.type][object.id] = {...object.fieldMatch}; + filterMatching[object.type][object.objectId] = {...object.fieldMatch}; }); this.env.model.dispatch(action, {id: filter.id, filter, ...filterMatching}); From 961b26e756dec9ed39eb25c998b30bac5ba2058e Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 9 Jul 2023 17:30:43 +0000 Subject: [PATCH 024/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 106 +++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index a033ba85..775069a5 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -39,6 +39,13 @@ msgstr "" msgid "Add text" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml:0 +#, python-format +msgid "Add to spreadesheet" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/spreadsheet.xml:0 @@ -146,6 +153,13 @@ msgstr "" msgid "Default value" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name @@ -154,12 +168,28 @@ msgstr "" msgid "Display Name" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Domain" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Edit domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -212,6 +242,13 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Insert pivot" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -243,18 +280,44 @@ msgstr "" msgid "Last Updated on" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Last updated at" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "List name" +msgstr "" + #. module: spreadsheet_oca #: model:res.groups,name:spreadsheet_oca.group_manager msgid "Manager" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__mode_id msgid "Mode" msgstr "" #. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "" @@ -296,6 +359,13 @@ msgstr "" msgid "Owner" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Pivot name" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -315,6 +385,13 @@ msgstr "" msgid "Readers" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Refresh all data" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -359,6 +436,13 @@ msgstr "" msgid "Server Revision" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Sorting" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__spreadsheet_id @@ -427,6 +511,20 @@ msgstr "" msgid "Year" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "ascending" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "descending" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -434,6 +532,14 @@ msgstr "" msgid "name is required" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "not updated" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_ir_websocket msgid "websocket message handling" From d2988f98b01f8d704bd2ef173f12945c5970882e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 9 Jul 2023 17:32:31 +0000 Subject: [PATCH 025/235] spreadsheet_oca 16.0.1.1.2 --- spreadsheet_oca/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index ca7f90ab..0fa2033c 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "16.0.1.1.1", + "version": "16.0.1.1.2", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", From ef0c45dc40297dd3b948e6eb6da31d4367ff1ce2 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Sun, 9 Jul 2023 23:57:36 +0200 Subject: [PATCH 026/235] [IMP] spreadsheet_oca: Allow to edit Odoo graphs properly Fixes #9 --- spreadsheet_oca/__manifest__.py | 1 + .../src/spreadsheet/bundle/odoo_panels.esm.js | 76 +++++++++++++++++++ .../src/spreadsheet/bundle/spreadsheet.xml | 36 +++++++++ .../static/src/spreadsheet/spreadsheet.scss | 5 ++ 4 files changed, 118 insertions(+) create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 0fa2033c..73b8c97a 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -34,6 +34,7 @@ "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js", + "spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js", ], }, } diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js new file mode 100644 index 00000000..970ef04e --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -0,0 +1,76 @@ +/** @odoo-module */ + +import {Domain} from "@web/core/domain"; +import {Many2OneField} from "@web/views/fields/many2one/many2one_field"; +import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; +import {useService} from "@web/core/utils/hooks"; + +const {chartSidePanelComponentRegistry} = spreadsheet.registries; +const {LineBarPieDesignPanel} = spreadsheet.components; +const {Component} = owl; + +export class OdooPanel extends Component { + setup() { + this.menus = useService("menu"); + } + get menuId() { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + if (menu) { + return [menu.id, menu.name]; + } + return undefined; + } + updateMenu(menuId) { + if (!menuId) { + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: undefined, + }); + return; + } + const menu = this.env.model.getters.getIrMenu(menuId[0]); + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: menu.xmlid || menu.id, + }); + } + get record() { + const menus = this.menus + .getAll() + .map((menu) => menu.id) + .filter((menuId) => menuId !== "root"); + return { + getFieldDomain: function () { + return new Domain([["id", "in", menus]]); + }, + getFieldContext: function () { + return {}; + }, + }; + } +} +OdooPanel.template = "spreadsheet_oca.OdooPanel"; +OdooPanel.components = {Many2OneField}; + +class OdooStackablePanel extends OdooPanel { + onChangeStacked(ev) { + this.props.updateChart(this.props.figureId, { + stacked: ev.target.checked, + }); + } +} +OdooStackablePanel.template = "spreadsheet_oca.OdooStackablePanel"; + +chartSidePanelComponentRegistry + .add("odoo_line", { + configuration: OdooStackablePanel, + design: LineBarPieDesignPanel, + }) + .add("odoo_bar", { + configuration: OdooStackablePanel, + design: LineBarPieDesignPanel, + }) + .add("odoo_pie", { + configuration: OdooPanel, + design: LineBarPieDesignPanel, + }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 9bd67783..09784535 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -386,4 +386,40 @@
+ +
+
Link to Odoo menu
+
+ +
+
+
+ + +
+ +
+
+
diff --git a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss index eecba723..aae0756b 100644 --- a/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss +++ b/spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss @@ -57,4 +57,9 @@ } } } + .o-section-value { + .o_field_many2one_selection { + width: 100%; + } + } } From 64870838887a8caf9df3a263a14624bc115b89de Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 12 Jul 2023 08:11:06 +0000 Subject: [PATCH 027/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 775069a5..1dc4bcd7 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -288,6 +288,13 @@ msgstr "" msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Link to Odoo menu" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -478,6 +485,13 @@ msgstr "" msgid "Spreadsheets" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Stacked" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 From 0370d6b267c86d704654efbfa60301e6b5d7387c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 12 Jul 2023 08:13:02 +0000 Subject: [PATCH 028/235] spreadsheet_oca 16.0.1.1.3 --- spreadsheet_oca/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 73b8c97a..d70b5248 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "16.0.1.1.2", + "version": "16.0.1.1.3", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", From 95df3200f5fbc806ae55be795524906924a3d7d6 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 12 Jul 2023 08:18:40 +0000 Subject: [PATCH 029/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 1dc4bcd7..2ea87c75 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -505,8 +505,8 @@ msgid "Type" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript #. odoo-python +#. odoo-javascript #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #, python-format From e095c62bcc985139575a314f234a6b04599a4d9e Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Sat, 19 Aug 2023 23:44:19 +0200 Subject: [PATCH 030/235] [IMP] spreadsheet_oca: Add roadmap for specific questions --- spreadsheet_oca/README.rst | 22 ++++++++-- spreadsheet_oca/readme/ROADMAP.rst | 6 +++ spreadsheet_oca/static/description/index.html | 40 +++++++++++++------ 3 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 spreadsheet_oca/readme/ROADMAP.rst diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 12ebd8ba..e0676273 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -2,10 +2,13 @@ Spreadsheet Oca =============== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:32b5b0c526375df2a635235ae4b4204334012bc326b4741f499614faaa7c6697 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,8 +22,11 @@ Spreadsheet Oca .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/spreadsheet-16-0/spreadsheet-16-0-spreadsheet_oca :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds a functionality for adding and editing Spreadsheets using Odoo CE. @@ -29,12 +35,22 @@ This module adds a functionality for adding and editing Spreadsheets using Odoo .. contents:: :local: +Usage +===== + +Adding new lines on pivot tables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When we add a pivot table, the number of rows is predefined according to the current data. + +In order to add new rows, we need to reinsert the pivot table. + Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/spreadsheet_oca/readme/ROADMAP.rst b/spreadsheet_oca/readme/ROADMAP.rst new file mode 100644 index 00000000..5db690b8 --- /dev/null +++ b/spreadsheet_oca/readme/ROADMAP.rst @@ -0,0 +1,6 @@ +Adding new lines on pivot tables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When we add a pivot table, the number of rows is predefined according to the current data. + +In order to add new rows, we need to reinsert the pivot table. diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index be8066a1..15c2004c 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -3,7 +3,7 @@ - + Spreadsheet Oca -
-

Spreadsheet Oca

+
+ + +Odoo Community Association + +
+

Spreadsheet Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets using Odoo CE.

It is an alternative to the proprietary module spreadsheet_edition @@ -397,9 +402,9 @@

Spreadsheet Oca

-

Usage

+

Usage

-

Create a new spreadsheet

+

Create a new spreadsheet

-

Development

+

Development

If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

-

Known issues / Roadmap

+

Known issues / Roadmap

-

Adding new lines on pivot tables

+

Adding new lines on pivot tables

When we add a pivot table, the number of rows is predefined according to the current data.

In order to add new rows, we need to reinsert the pivot table.

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -510,15 +515,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -545,5 +550,6 @@

Maintainers

+
From 1ac5db3484b9cb93233d86787b899f33c738af63 Mon Sep 17 00:00:00 2001 From: CarlosRoca13 Date: Wed, 17 Sep 2025 12:52:50 +0200 Subject: [PATCH 145/235] [FIX] spreadsheet_oca: Make use of _zip_xslx_files that spreadsheet module offers Reduce the logic of the controller by using the function that spreadsheet module offers and avoid error when rendering images on the xlsx file. --- spreadsheet_oca/controllers/main.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/spreadsheet_oca/controllers/main.py b/spreadsheet_oca/controllers/main.py index ef77af1d..dcc35bc7 100644 --- a/spreadsheet_oca/controllers/main.py +++ b/spreadsheet_oca/controllers/main.py @@ -1,8 +1,6 @@ # Copyright 2024 Tecnativa - Carlos Roca # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). import json -from io import BytesIO -from zipfile import ZipFile from odoo.http import Controller, content_disposition, request, route @@ -13,13 +11,9 @@ def download_spreadsheet_xlsx(self, zip_name, files, **kw): if hasattr(files, "read"): files = files.read().decode("utf-8") files = json.loads(files) - file_bytes = BytesIO() - with ZipFile(file_bytes, "w") as zip_file: - for file in files: - zip_file.writestr(file["path"], file["content"]) - file_content = file_bytes.getvalue() + file_content = request.env["spreadsheet.mixin"]._zip_xslx_files(files) return request.make_response( - file_bytes.getvalue(), + file_content, [ ("Content-Length", len(file_content)), ("Content-Type", "application/vnd.ms-excel"), From ea513c0a9299cd098a9404deb2c959455123c77f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 17 Sep 2025 21:57:29 +0000 Subject: [PATCH 146/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index e6b74834..869c655f 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:97d72e6ea5d8c3d2efea4dc8febd611db0fa13076f55d7eb9298216ded7aae92 + !! source digest: sha256:53f2ac387d2b0a0a0d10edfbb2702f176f39205810a3eff890d1bb146bf33829 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 0515c56b..9a892368 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "17.0.1.0.1", + "version": "17.0.1.0.2", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index f4a54955..8d8a205c 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:97d72e6ea5d8c3d2efea4dc8febd611db0fa13076f55d7eb9298216ded7aae92 +!! source digest: sha256:53f2ac387d2b0a0a0d10edfbb2702f176f39205810a3eff890d1bb146bf33829 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From e122068c5a8b0e18ff09922156bb353cba88980e Mon Sep 17 00:00:00 2001 From: CarlosRoca13 Date: Thu, 18 Sep 2025 10:35:55 +0200 Subject: [PATCH 147/235] [FIX] spreadsheet_oca: Filters don't take care about field type --- spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js | 1 + 1 file changed, 1 insertion(+) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index a6d1723b..99f9677d 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -181,6 +181,7 @@ export class EditFilterPanel extends Component { } onFieldMatchUpdate(object, name) { this.state.objects[object.id].fieldMatch.chain = name; + this.state.objects[object.id].fieldMatch.type = object.fields[name]?.type; } toggleDateDefaultValue(ev) { this.state.defaultValue = ev.target.checked ? "this_month" : undefined; From 0c48257907dd15067018e401ea8e6855ecc9174d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 18 Sep 2025 08:42:51 +0000 Subject: [PATCH 148/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 869c655f..a0cab53c 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:53f2ac387d2b0a0a0d10edfbb2702f176f39205810a3eff890d1bb146bf33829 + !! source digest: sha256:2e54effb5771467ddab39e872bcddddc5e7a900f7afb88dd3bb87ac26d195ca5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 9a892368..553f0364 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "17.0.1.0.2", + "version": "17.0.1.0.3", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 8d8a205c..7bae2017 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:53f2ac387d2b0a0a0d10edfbb2702f176f39205810a3eff890d1bb146bf33829 +!! source digest: sha256:2e54effb5771467ddab39e872bcddddc5e7a900f7afb88dd3bb87ac26d195ca5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From 2be3cb66d9e0731736772e8692d361ae2ec1b54e Mon Sep 17 00:00:00 2001 From: Chris Mann Date: Wed, 24 Sep 2025 14:12:27 +0100 Subject: [PATCH 149/235] [IMP] spreadsheet_oca: pre-commit auto fixes --- spreadsheet_oca/README.rst | 134 ++-- .../spreadsheet_spreadsheet_import_mode.xml | 33 +- spreadsheet_oca/demo/demo_spreadsheet.json | 30 +- .../demo/spreadsheet_spreadsheet.xml | 9 +- spreadsheet_oca/security/security.xml | 33 +- .../static/src/pivot/pivot_table.esm.js | 120 ++-- .../src/spreadsheet/bundle/chart_panel.esm.js | 66 +- .../spreadsheet/bundle/chart_panels.esm.js | 153 ++-- .../src/spreadsheet/bundle/filter.esm.js | 318 +++++---- .../bundle/filter_panel_datasources.esm.js | 501 +++++++------ .../src/spreadsheet/bundle/odoo_panels.esm.js | 164 ++--- .../src/spreadsheet/bundle/spreadsheet.xml | 659 ++++++++---------- .../bundle/spreadsheet_action.esm.js | 535 +++++++------- .../bundle/spreadsheet_controlpanel.esm.js | 32 +- .../bundle/spreadsheet_renderer.esm.js | 333 +++++---- .../src/spreadsheet/graph_controller.esm.js | 38 +- .../src/spreadsheet/graph_controller.xml | 13 +- .../src/spreadsheet/list_controller.esm.js | 10 +- .../src/spreadsheet/list_controller.xml | 23 +- .../src/spreadsheet/list_renderer.esm.js | 108 +-- .../src/spreadsheet/pivot_controller.esm.js | 126 ++-- .../src/spreadsheet/pivot_controller.xml | 12 +- .../static/src/spreadsheet/spreadsheet.scss | 112 +-- .../src/spreadsheet/spreadsheet_action.esm.js | 26 +- .../utils/dynamic_generators.esm.js | 98 ++- .../spreadsheet_tree_view.esm.js | 122 ++-- .../spreadsheet_tree_view.xml | 36 +- .../views/spreadsheet_spreadsheet.xml | 88 +-- .../wizards/spreadsheet_select_row_number.xml | 18 +- .../spreadsheet_spreadsheet_import.xml | 83 +-- 30 files changed, 1947 insertions(+), 2086 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index a0cab53c..8ddb4f8f 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - =============== Spreadsheet Oca =============== @@ -17,17 +13,17 @@ Spreadsheet Oca .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github - :target: https://github.com/OCA/spreadsheet/tree/17.0/spreadsheet_oca + :target: https://github.com/OCA/spreadsheet/tree/18.0/spreadsheet_oca :alt: OCA/spreadsheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/spreadsheet-17-0/spreadsheet-17-0-spreadsheet_oca + :target: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,86 +45,86 @@ Usage **Create a new spreadsheet** ---------------------------- -- Go to 'Spreadsheet' menu -- Click on 'Create' -- Put a name, then click on the "Edit" button +- Go to 'Spreadsheet' menu +- Click on 'Create' +- Put a name, then click on the "Edit" button |image1| -- At this point you switch to spreadsheet editing mode. The editor is - named ``o-spreadsheet`` and looks like another common spreadsheet web - editors. (OnlyOffice, Ethercalc, Google Sheets (non-free)). +- At this point you switch to spreadsheet editing mode. The editor is + named ``o-spreadsheet`` and looks like another common spreadsheet web + editors. (OnlyOffice, Ethercalc, Google Sheets (non-free)). |image2| -- You can use common functions ``SUM()``, ``AVERAGE()``, etc. in the - cells. For a complete list of functions and their syntax, Refer to the - documentation https://github.com/odoo/o-spreadsheet/ or go to - https://odoo.github.io/o-spreadsheet/ and click on "Insert > - Function". +- You can use common functions ``SUM()``, ``AVERAGE()``, etc. in the + cells. For a complete list of functions and their syntax, Refer to + the documentation https://github.com/odoo/o-spreadsheet/ or go to + https://odoo.github.io/o-spreadsheet/ and click on "Insert > + Function". |image3| -- Note: Business Odoo module can add "business functions". This is - currently the case for the accounting module, which adds the following - features: - - - ``ODOO.CREDIT(account_codes, date_range)``: Get the total credit - for the specified account(s) and period. - - ``ODOO.DEBIT(account_codes, date_range)``: Get the total debit - for the specified account(s) and period. - - ``ODOO.BALANCE(account_codes, date_range)``: Get the total - balance for the specified account(s) and period. - - ``ODOO.FISCALYEAR.START(day)``: Returns the starting date of the - fiscal year encompassing the provided date. - - ``ODOO.FISCALYEAR.END(day)``: Returns the ending date of the - fiscal year encompassing the provided date. - - ``ODOO.ACCOUNT.GROUP(type)``: Returns the account ids of a given - group where type should be a value of the ``account_type`` field - of ``account.account`` model. (``income``, ``asset_receivable``, - etc.) +- Note: Business Odoo module can add "business functions". This is + currently the case for the accounting module, which adds the + following features: + + - ``ODOO.CREDIT(account_codes, date_range)``: Get the total + credit for the specified account(s) and period. + - ``ODOO.DEBIT(account_codes, date_range)``: Get the total debit + for the specified account(s) and period. + - ``ODOO.BALANCE(account_codes, date_range)``: Get the total + balance for the specified account(s) and period. + - ``ODOO.FISCALYEAR.START(day)``: Returns the starting date of + the fiscal year encompassing the provided date. + - ``ODOO.FISCALYEAR.END(day)``: Returns the ending date of the + fiscal year encompassing the provided date. + - ``ODOO.ACCOUNT.GROUP(type)``: Returns the account ids of a + given group where type should be a value of the + ``account_type`` field of ``account.account`` model. + (``income``, ``asset_receivable``, etc.) **Create a new dynamic spreadsheet from pivot** ----------------------------------------------- -- Go to any pivot -- Press on insert button -- Select the dynamic rows or dynamic columns option and set a number of - rows/columns +- Go to any pivot +- Press on insert button +- Select the dynamic rows or dynamic columns option and set a number of + rows/columns A new table that will be updated with the actual or filtered values will be added. -- Note: When a pivot has multiple levels of aggrupations in the rows or - the columns, the number of rows/columns selected will be transfered to - each level. +- Note: When a pivot has multiple levels of aggrupations in the rows or + the columns, the number of rows/columns selected will be transfered + to each level. - Example: number of groups -> 2 number of rows -> 3 + Example: number of groups -> 2 number of rows -> 3 - - val1 + - val1 - - subval1.1 - - subval1.2 - - subval1.3 + - subval1.1 + - subval1.2 + - subval1.3 - - val2 + - val2 - - subval2.1 - - subval2.2 - - subval2.3 + - subval2.1 + - subval2.2 + - subval2.3 - - val3 + - val3 - - subval3.1 - - subval3.2 - - subval3.3 + - subval3.1 + - subval3.2 + - subval3.3 -https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/Hhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/vhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/xhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/phttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ohttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ghttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/ -https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/../static/description/spreadsheetdynamic_table.gif +https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/Hhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/vhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/xhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/phttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ohttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ghttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/ +https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/../static/description/spreadsheetdynamic_table.gif -.. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/static/description/spreadsheet_create.png -.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/static/description/spreadsheet_edit.png -.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/17.0/spreadsheet_oca/static/description/o-spreadsheet.png +.. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/spreadsheet_create.png +.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/spreadsheet_edit.png +.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/o-spreadsheet.png Development =========== @@ -154,7 +150,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -169,14 +165,14 @@ Authors Contributors ------------ -- Enric Tobella -- `Tecnativa `__: +- Enric Tobella +- `Tecnativa `__: - - Carlos Roca + - Carlos Roca -- `Open User Systems `__: +- `Open User Systems `__: - - Chris Mann + - Chris Mann Maintainers ----------- @@ -191,6 +187,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/spreadsheet `_ project on GitHub. +This module is part of the `OCA/spreadsheet `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml b/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml index 14335c7f..1ee1db44 100644 --- a/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml +++ b/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml @@ -1,39 +1,30 @@ + id="spreadsheet_import_mode_new" + model="spreadsheet.spreadsheet.import.mode" + > new Create spreadsheet - + + id="spreadsheet_import_mode_add" + model="spreadsheet.spreadsheet.import.mode" + > add Add to spreadsheet - + + id="spreadsheet_import_mode_add_sheet" + model="spreadsheet.spreadsheet.import.mode" + > add_sheet Add sheet to spreadsheet - + diff --git a/spreadsheet_oca/demo/demo_spreadsheet.json b/spreadsheet_oca/demo/demo_spreadsheet.json index fde6c594..79a0811d 100644 --- a/spreadsheet_oca/demo/demo_spreadsheet.json +++ b/spreadsheet_oca/demo/demo_spreadsheet.json @@ -10,17 +10,17 @@ "cols": {}, "merges": [], "cells": { - "A1": { "style": 1, "content": "First Value", "border": 1 }, - "A2": { "format": 1, "content": "30.55", "border": 1 }, - "B1": { "style": 1, "content": "Second Value", "border": 1 }, - "B2": { "format": 1, "content": "50", "border": 1 }, - "C1": { "style": 1, "content": "Total", "border": 1 }, - "C2": { "format": 1, "content": "=sum(A2:B2)", "border": 1 }, - "A3": { "border": 2 }, - "B3": { "border": 2 }, - "C3": { "border": 2 }, - "D1": { "border": 3 }, - "D2": { "border": 3 } + "A1": {"style": 1, "content": "First Value", "border": 1}, + "A2": {"format": 1, "content": "30.55", "border": 1}, + "B1": {"style": 1, "content": "Second Value", "border": 1}, + "B2": {"format": 1, "content": "50", "border": 1}, + "C1": {"style": 1, "content": "Total", "border": 1}, + "C2": {"format": 1, "content": "=sum(A2:B2)", "border": 1}, + "A3": {"border": 2}, + "B3": {"border": 2}, + "C3": {"border": 2}, + "D1": {"border": 3}, + "D2": {"border": 3} }, "conditionalFormats": [], "figures": [], @@ -30,8 +30,8 @@ } ], "entities": {}, - "styles": { "1": { "bold": true, "align": "center" } }, - "formats": { "1": "[$$]#,##0.00" }, + "styles": {"1": {"bold": true, "align": "center"}}, + "formats": {"1": "[$$]#,##0.00"}, "borders": { "1": { "top": ["thin", "#000"], @@ -39,8 +39,8 @@ "left": ["thin", "#000"], "right": ["thin", "#000"] }, - "2": { "top": ["thin", "#000"] }, - "3": { "left": ["thin", "#000"] } + "2": {"top": ["thin", "#000"]}, + "3": {"left": ["thin", "#000"]} }, "revisionId": "START_REVISION", "uniqueFigureIds": true, diff --git a/spreadsheet_oca/demo/spreadsheet_spreadsheet.xml b/spreadsheet_oca/demo/spreadsheet_spreadsheet.xml index 798da876..11222ed5 100644 --- a/spreadsheet_oca/demo/spreadsheet_spreadsheet.xml +++ b/spreadsheet_oca/demo/spreadsheet_spreadsheet.xml @@ -3,10 +3,9 @@ Demo spreadsheet - + name="spreadsheet_binary_data" + type="base64" + file="spreadsheet_oca/demo/demo_spreadsheet.json" + /> diff --git a/spreadsheet_oca/security/security.xml b/spreadsheet_oca/security/security.xml index 2f37faa8..aa94100a 100644 --- a/spreadsheet_oca/security/security.xml +++ b/spreadsheet_oca/security/security.xml @@ -2,7 +2,6 @@ - Spreadsheet 99 @@ -16,16 +15,14 @@ + name="users" + eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]" + /> Spreadsheet Company Rule - [('company_id', 'in', company_ids + [False])] + [('company_id', 'in', company_ids + [False])] Spreadsheet Owner @@ -38,8 +35,8 @@ ['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.groups_id.ids)] + name="domain_force" + >['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.groups_id.ids)] @@ -48,8 +45,8 @@ ['|', ('reader_ids','=', user.id), ('reader_group_ids','in', user.groups_id.ids)] + name="domain_force" + >['|', ('reader_ids','=', user.id), ('reader_group_ids','in', user.groups_id.ids)] @@ -57,20 +54,12 @@ Spreadsheet Manager - + [(1,'=', 1)] Spreadsheet Import mode - - [('group_ids','in', user.groups_id.ids)] + + [('group_ids','in', user.groups_id.ids)] diff --git a/spreadsheet_oca/static/src/pivot/pivot_table.esm.js b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js index 7dc50bd8..3202d542 100644 --- a/spreadsheet_oca/static/src/pivot/pivot_table.esm.js +++ b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js @@ -1,67 +1,67 @@ /** @odoo-module */ /* Copyright 2024 Tecnativa - Carlos Roca * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ -import { SpreadsheetPivotTable } from "@spreadsheet/pivot/pivot_table"; -import { patch } from "@web/core/utils/patch"; +import {SpreadsheetPivotTable} from "@spreadsheet/pivot/pivot_table"; +import {patch} from "@web/core/utils/patch"; patch(SpreadsheetPivotTable.prototype, { - get _dynamic_cols() { - return this._cols[this._cols.length - 1] === "dynamic_cols"; - }, - getNumberOfMeasures() { - if (this._dynamic_cols) { - // We have disabled the computation of the last column to prevent showing - // the totalization of the columns when they are of a dynamic type. If - // shown, it would display the total of all records corresponding to the - // row, rather than what is being displayed on the screen. - return 1; - } - return this._super(...arguments); - }, - getColHeaders() { - if (this._dynamic_cols) { - // We return a copy of this._cols without the last entry of the array, - // which indicates that these are dynamic columns. - var cols = [...this._cols]; - cols.pop(); - return cols; - } - return this._super(...arguments); - }, - getMeasureHeaders() { - if (this._dynamic_cols) { - return this._cols[this._cols.length - 2]; - } - return this._super(...arguments); - }, - getColWidth() { - if (this._dynamic_cols) { - return this._cols[this._cols.length - 2].length; - } - return this._super(...arguments); - }, - getColHeight() { - if (this._dynamic_cols) { - return this._cols.length - 1; - } - return this._super(...arguments); - }, - getColMeasureIndex(values) { - if (this._dynamic_cols) { - var cols = [...this._cols]; - cols.pop(); - const vals = JSON.stringify(values); - const maxLength = Math.max(...cols.map((col) => col.length)); - for (let i = 0; i < maxLength; i++) { - const cellValues = cols.map((col) => - JSON.stringify((col[i] || {}).values) - ); - if (cellValues.includes(vals)) { - return i; + get _dynamic_cols() { + return this._cols[this._cols.length - 1] === "dynamic_cols"; + }, + getNumberOfMeasures() { + if (this._dynamic_cols) { + // We have disabled the computation of the last column to prevent showing + // the totalization of the columns when they are of a dynamic type. If + // shown, it would display the total of all records corresponding to the + // row, rather than what is being displayed on the screen. + return 1; } - } - return -1; - } - return this._super(...arguments); - }, + return this._super(...arguments); + }, + getColHeaders() { + if (this._dynamic_cols) { + // We return a copy of this._cols without the last entry of the array, + // which indicates that these are dynamic columns. + var cols = [...this._cols]; + cols.pop(); + return cols; + } + return this._super(...arguments); + }, + getMeasureHeaders() { + if (this._dynamic_cols) { + return this._cols[this._cols.length - 2]; + } + return this._super(...arguments); + }, + getColWidth() { + if (this._dynamic_cols) { + return this._cols[this._cols.length - 2].length; + } + return this._super(...arguments); + }, + getColHeight() { + if (this._dynamic_cols) { + return this._cols.length - 1; + } + return this._super(...arguments); + }, + getColMeasureIndex(values) { + if (this._dynamic_cols) { + var cols = [...this._cols]; + cols.pop(); + const vals = JSON.stringify(values); + const maxLength = Math.max(...cols.map((col) => col.length)); + for (let i = 0; i < maxLength; i++) { + const cellValues = cols.map((col) => + JSON.stringify((col[i] || {}).values) + ); + if (cellValues.includes(vals)) { + return i; + } + } + return -1; + } + return this._super(...arguments); + }, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js index c4c8b689..a98cf157 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js @@ -1,43 +1,43 @@ /** @odoo-module */ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { patch } from "@web/core/utils/patch"; +import {patch} from "@web/core/utils/patch"; -const { chartRegistry } = spreadsheet.registries; -const { ChartPanel } = spreadsheet.components; +const {chartRegistry} = spreadsheet.registries; +const {ChartPanel} = spreadsheet.components; export function isOdooKey(code) { - return code.startsWith("odoo_"); + return code.startsWith("odoo_"); } patch(ChartPanel.prototype, { - get chartTypes() { - return this.filterChartTypes(isOdooKey(this.getChartDefinition().type)); - }, + get chartTypes() { + return this.filterChartTypes(isOdooKey(this.getChartDefinition().type)); + }, - filterChartTypes(isOdoo) { - var result = {}; - for (const key of chartRegistry.getKeys()) { - if ((isOdoo && isOdooKey(key)) || (!isOdoo && !isOdooKey(key))) { - result[key] = chartRegistry.get(key).name; - } - } - return result; - }, - onTypeChange(type) { - if (isOdooKey(this.getChartDefinition().type)) { - const definition = { - stacked: false, - verticalAxisPosition: "left", - ...this.env.model.getters.getChartDefinition(this.figureId), - type, - }; - this.env.model.dispatch("UPDATE_CHART", { - definition, - id: this.figureId, - sheetId: this.env.model.getters.getActiveSheetId(), - }); - } else { - super.onTypeChange(type); - } - }, + filterChartTypes(isOdoo) { + var result = {}; + for (const key of chartRegistry.getKeys()) { + if ((isOdoo && isOdooKey(key)) || (!isOdoo && !isOdooKey(key))) { + result[key] = chartRegistry.get(key).name; + } + } + return result; + }, + onTypeChange(type) { + if (isOdooKey(this.getChartDefinition().type)) { + const definition = { + stacked: false, + verticalAxisPosition: "left", + ...this.env.model.getters.getChartDefinition(this.figureId), + type, + }; + this.env.model.dispatch("UPDATE_CHART", { + definition, + id: this.figureId, + sheetId: this.env.model.getters.getActiveSheetId(), + }); + } else { + super.onTypeChange(type); + } + }, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js index 47f60691..8bda4972 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js @@ -1,99 +1,96 @@ /** @odoo-module */ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { Domain } from "@web/core/domain"; +import {Domain} from "@web/core/domain"; -import { Many2XAutocomplete } from "@web/views/fields/relational_utils"; -import { patch } from "@web/core/utils/patch"; -import { useService } from "@web/core/utils/hooks"; -import { _t } from "@web/core/l10n/translation"; +import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; +import {patch} from "@web/core/utils/patch"; +import {useService} from "@web/core/utils/hooks"; +import {_t} from "@web/core/l10n/translation"; -const { - LineBarPieConfigPanel, - ScorecardChartConfigPanel, - GaugeChartConfigPanel, -} = spreadsheet.components; +const {LineBarPieConfigPanel, ScorecardChartConfigPanel, GaugeChartConfigPanel} = + spreadsheet.components; const menuChartProps = { - setup() { - super.setup(...arguments); - this.menus = useService("menu"); - }, - get menuProps() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - var result = { - fieldString: _t("Menu Items"), - resModel: "ir.ui.menu", - update: this.updateMenu.bind(this), - activeActions: {}, - getDomain: this.getDomain.bind(this), - }; - if (menu) { - result.value = menu.name; - result.id = menu.id; - } - return result; - }, + setup() { + super.setup(...arguments); + this.menus = useService("menu"); + }, + get menuProps() { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + var result = { + fieldString: _t("Menu Items"), + resModel: "ir.ui.menu", + update: this.updateMenu.bind(this), + activeActions: {}, + getDomain: this.getDomain.bind(this), + }; + if (menu) { + result.value = menu.name; + result.id = menu.id; + } + return result; + }, - getDomain() { - const menus = this.menus - .getAll() - .map((menu) => menu.id) - .filter((menuId) => menuId !== "root"); - return [["id", "in", menus]]; - }, - get menuId() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - if (menu) { - return [menu.id, menu.name]; - } - return false; - }, - updateMenu(menuId) { - if (!menuId) { - this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { - chartId: this.props.figureId, - odooMenuId: false, - }); - return; - } - const menu = this.env.model.getters.getIrMenu(menuId[0].id); - console.log(menu); - this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { - chartId: this.props.figureId, - odooMenuId: menu.xmlid || menu.id, - }); - }, - get record() { - const menus = this.menus - .getAll() - .map((menu) => menu.id) - .filter((menuId) => menuId !== "root"); - return { - getFieldDomain: function () { - return new Domain([["id", "in", menus]]); - }, - getFieldContext: function () { - return {}; - }, - }; - }, + getDomain() { + const menus = this.menus + .getAll() + .map((menu) => menu.id) + .filter((menuId) => menuId !== "root"); + return [["id", "in", menus]]; + }, + get menuId() { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + if (menu) { + return [menu.id, menu.name]; + } + return false; + }, + updateMenu(menuId) { + if (!menuId) { + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: false, + }); + return; + } + const menu = this.env.model.getters.getIrMenu(menuId[0].id); + console.log(menu); + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: menu.xmlid || menu.id, + }); + }, + get record() { + const menus = this.menus + .getAll() + .map((menu) => menu.id) + .filter((menuId) => menuId !== "root"); + return { + getFieldDomain: function () { + return new Domain([["id", "in", menus]]); + }, + getFieldContext: function () { + return {}; + }, + }; + }, }; patch(LineBarPieConfigPanel.prototype, menuChartProps); LineBarPieConfigPanel.components = { - ...LineBarPieConfigPanel.components, - Many2XAutocomplete, + ...LineBarPieConfigPanel.components, + Many2XAutocomplete, }; patch(ScorecardChartConfigPanel.prototype, menuChartProps); ScorecardChartConfigPanel.components = { - ...ScorecardChartConfigPanel.components, - Many2XAutocomplete, + ...ScorecardChartConfigPanel.components, + Many2XAutocomplete, }; patch(GaugeChartConfigPanel.prototype, menuChartProps); GaugeChartConfigPanel.components = { - ...GaugeChartConfigPanel.components, - Many2XAutocomplete, + ...GaugeChartConfigPanel.components, + Many2XAutocomplete, }; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index 99f9677d..7076f88f 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -1,197 +1,195 @@ /** @odoo-module **/ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { Component, onWillStart, useState } from "@odoo/owl"; -import { _lt, _t } from "@web/core/l10n/translation"; -import { FilterValue } from "@spreadsheet/global_filters/components/filter_value/filter_value"; -import { ModelFieldSelector } from "@web/core/model_field_selector/model_field_selector"; -import { ModelSelector } from "@web/core/model_selector/model_selector"; -import { RELATIVE_DATE_RANGE_TYPES } from "@spreadsheet/helpers/constants"; -import { globalFiltersFieldMatchers } from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; -import { useService } from "@web/core/utils/hooks"; +import {Component, onWillStart, useState} from "@odoo/owl"; +import {_lt, _t} from "@web/core/l10n/translation"; +import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; +import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; +import {ModelSelector} from "@web/core/model_selector/model_selector"; +import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; +import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; +import {useService} from "@web/core/utils/hooks"; -const { topbarMenuRegistry } = spreadsheet.registries; +const {topbarMenuRegistry} = spreadsheet.registries; const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); -topbarMenuRegistry.add("file", { name: _t("File"), sequence: 10 }); +topbarMenuRegistry.add("file", {name: _t("File"), sequence: 10}); topbarMenuRegistry.addChild("filters", ["file"], { - name: _t("Filters"), - sequence: 70, - execute: (env) => env.openSidePanel("FilterPanel", {}), - icon: "o-spreadsheet-Icon.GLOBAL_FILTERS", + name: _t("Filters"), + sequence: 70, + execute: (env) => env.openSidePanel("FilterPanel", {}), + icon: "o-spreadsheet-Icon.GLOBAL_FILTERS", }); topbarMenuRegistry.addChild("save", ["file"], { - name: _t("Save"), - // Description: "Ctrl+S", // This is not working, so removing it from the view for now... - sequence: 10, - execute: (env) => env.saveSpreadsheet(), - icon: "o-spreadsheet-Icon.DOWNLOAD", + name: _t("Save"), + // Description: "Ctrl+S", // This is not working, so removing it from the view for now... + sequence: 10, + execute: (env) => env.saveSpreadsheet(), + icon: "o-spreadsheet-Icon.DOWNLOAD", }); topbarMenuRegistry.addChild("download", ["file"], { - name: _t("Download XLSX"), - sequence: 20, - execute: (env) => env.downloadAsXLXS(), - icon: "o-spreadsheet-Icon.EXPORT_XLSX", + name: _t("Download XLSX"), + sequence: 20, + execute: (env) => env.downloadAsXLXS(), + icon: "o-spreadsheet-Icon.EXPORT_XLSX", }); topbarMenuRegistry.addChild("settings", ["file"], { - name: _t("Settings"), - sequence: 100, - execute: (env) => env.openSidePanel("Settings"), - icon: "o-spreadsheet-Icon.COG", + name: _t("Settings"), + sequence: 100, + execute: (env) => env.openSidePanel("Settings"), + icon: "o-spreadsheet-Icon.COG", }); -const { sidePanelRegistry } = spreadsheet.registries; +const {sidePanelRegistry} = spreadsheet.registries; export class FilterPanel extends Component { - onEditFilter(filter) { - this.env.openSidePanel("EditFilterPanel", { filter }); - } - onAddFilter(type) { - this.env.openSidePanel("EditFilterPanel", { filter: { type: type } }); - } + onEditFilter(filter) { + this.env.openSidePanel("EditFilterPanel", {filter}); + } + onAddFilter(type) { + this.env.openSidePanel("EditFilterPanel", {filter: {type: type}}); + } } FilterPanel.template = "spreadsheet_oca.FilterPanel"; FilterPanel.components = { - FilterValue, + FilterValue, }; sidePanelRegistry.add("FilterPanel", { - title: "Filters", - Body: FilterPanel, + title: "Filters", + Body: FilterPanel, }); export class EditFilterPanel extends Component { - setup() { - this.filterId = this.props.filter; - this.orm = useService("orm"); - this.state = useState({ - label: this.props.filter.label, - type: this.props.filter.type, - defaultValue: this.props.filter.defaultValue, - rangeType: this.props.filter.rangeType || "year", - modelName: { technical: this.props.filter.modelName, label: null }, - objects: {}, - }); - this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; - onWillStart(this.willStart.bind(this)); - } - async willStart() { - if (this.state.modelName.technical !== undefined) { - const modelLabel = await this.orm.call("ir.model", "display_name_for", [ - [this.state.modelName.technical], - ]); - this.state.modelName.label = modelLabel[0] && modelLabel[0].display_name; + setup() { + this.filterId = this.props.filter; + this.orm = useService("orm"); + this.state = useState({ + label: this.props.filter.label, + type: this.props.filter.type, + defaultValue: this.props.filter.defaultValue, + rangeType: this.props.filter.rangeType || "year", + modelName: {technical: this.props.filter.modelName, label: null}, + objects: {}, + }); + this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; + onWillStart(this.willStart.bind(this)); } - var ModelFields = []; - for (var [objectType, objectClass] of Object.entries( - globalFiltersFieldMatchers - )) { - for (const objectId of objectClass.getIds()) { - var fields = objectClass.getFields(objectId); - this.state.objects[objectType + "_" + objectId] = { - id: objectType + "_" + objectId, - objectId: objectId, - name: objectClass.getDisplayName(objectId), - tag: await objectClass.getTag(objectId), - fieldMatch: - objectClass.getFieldMatching(objectId, this.props.filter.id) || {}, - fields: fields, - type: objectType, - model: objectClass.getModel(objectId), - }; - ModelFields.push(fields); - } + async willStart() { + if (this.state.modelName.technical !== undefined) { + const modelLabel = await this.orm.call("ir.model", "display_name_for", [ + [this.state.modelName.technical], + ]); + this.state.modelName.label = modelLabel[0] && modelLabel[0].display_name; + } + var ModelFields = []; + for (var [objectType, objectClass] of Object.entries( + globalFiltersFieldMatchers + )) { + for (const objectId of objectClass.getIds()) { + var fields = objectClass.getFields(objectId); + this.state.objects[objectType + "_" + objectId] = { + id: objectType + "_" + objectId, + objectId: objectId, + name: objectClass.getDisplayName(objectId), + tag: await objectClass.getTag(objectId), + fieldMatch: + objectClass.getFieldMatching(objectId, this.props.filter.id) || + {}, + fields: fields, + type: objectType, + model: objectClass.getModel(objectId), + }; + ModelFields.push(fields); + } + } + this.models = [ + ...new Set( + ModelFields.map((field_items) => Object.values(field_items)) + .flat() + .filter((field) => field.relation) + .map((field) => field.relation) + ), + ]; + } + get dateRangeTypes() { + return [ + {type: "fixedPeriod", description: _t("Month / Quarter")}, + {type: "relative", description: _t("Relative Period")}, + {type: "from_to", description: _t("From / To")}, + ]; + } + get dateOffset() { + return [ + {value: 0, name: ""}, + {value: -1, name: _lt("Previous")}, + {value: -2, name: _lt("Before Previous")}, + {value: 1, name: _lt("Next")}, + {value: 2, name: _lt("After next")}, + ]; + } + onChangeFieldMatchOffset(object, ev) { + this.state.objects[object.id].fieldMatch.offset = parseInt(ev.target.value, 10); + } + onModelSelected(ev) { + this.state.modelName.technical = ev.technical; + this.state.modelName.label = ev.label; } - this.models = [ - ...new Set( - ModelFields.map((field_items) => Object.values(field_items)) - .flat() - .filter((field) => field.relation) - .map((field) => field.relation) - ), - ]; - } - get dateRangeTypes() { - return [ - { type: "fixedPeriod", description: _t("Month / Quarter") }, - { type: "relative", description: _t("Relative Period") }, - { type: "from_to", description: _t("From / To") }, - ]; - } - get dateOffset() { - return [ - { value: 0, name: "" }, - { value: -1, name: _lt("Previous") }, - { value: -2, name: _lt("Before Previous") }, - { value: 1, name: _lt("Next") }, - { value: 2, name: _lt("After next") }, - ]; - } - onChangeFieldMatchOffset(object, ev) { - this.state.objects[object.id].fieldMatch.offset = parseInt( - ev.target.value, - 10 - ); - } - onModelSelected(ev) { - this.state.modelName.technical = ev.technical; - this.state.modelName.label = ev.label; - } - onDateRangeChange(ev) { - this.state.rangeType = ev.target.value; - this.state.defaultValue = undefined; - } - onSave() { - const action = this.props.filter.id - ? "EDIT_GLOBAL_FILTER" - : "ADD_GLOBAL_FILTER"; - this.env.openSidePanel("FilterPanel", {}); - var filter = { - id: this.props.filter.id || uuidGenerator.uuidv4(), - type: this.state.type, - label: this.state.label, - defaultValue: this.state.defaultValue, - rangeType: this.state.rangeType, - modelName: this.state.modelName.technical, - }; - var filterMatching = {}; - Object.values(this.state.objects).forEach((object) => { - filterMatching[object.type] = filterMatching[object.type] || {}; - filterMatching[object.type][object.objectId] = { ...object.fieldMatch }; - }); - this.env.model.dispatch(action, { - id: filter.id, - filter, - ...filterMatching, - }); + onDateRangeChange(ev) { + this.state.rangeType = ev.target.value; + this.state.defaultValue = undefined; + } + onSave() { + const action = this.props.filter.id + ? "EDIT_GLOBAL_FILTER" + : "ADD_GLOBAL_FILTER"; + this.env.openSidePanel("FilterPanel", {}); + var filter = { + id: this.props.filter.id || uuidGenerator.uuidv4(), + type: this.state.type, + label: this.state.label, + defaultValue: this.state.defaultValue, + rangeType: this.state.rangeType, + modelName: this.state.modelName.technical, + }; + var filterMatching = {}; + Object.values(this.state.objects).forEach((object) => { + filterMatching[object.type] = filterMatching[object.type] || {}; + filterMatching[object.type][object.objectId] = {...object.fieldMatch}; + }); + this.env.model.dispatch(action, { + id: filter.id, + filter, + ...filterMatching, + }); - this.env.openSidePanel("FilterPanel", {}); - } - onCancel() { - this.env.openSidePanel("FilterPanel", {}); - } - onRemove() { - if (this.props.filter.id) { - this.env.model.dispatch("REMOVE_GLOBAL_FILTER", { - id: this.props.filter.id, - }); + this.env.openSidePanel("FilterPanel", {}); + } + onCancel() { + this.env.openSidePanel("FilterPanel", {}); + } + onRemove() { + if (this.props.filter.id) { + this.env.model.dispatch("REMOVE_GLOBAL_FILTER", { + id: this.props.filter.id, + }); + } + this.env.openSidePanel("FilterPanel", {}); + } + onFieldMatchUpdate(object, name) { + this.state.objects[object.id].fieldMatch.chain = name; + this.state.objects[object.id].fieldMatch.type = object.fields[name]?.type; + } + toggleDateDefaultValue(ev) { + this.state.defaultValue = ev.target.checked ? "this_month" : undefined; } - this.env.openSidePanel("FilterPanel", {}); - } - onFieldMatchUpdate(object, name) { - this.state.objects[object.id].fieldMatch.chain = name; - this.state.objects[object.id].fieldMatch.type = object.fields[name]?.type; - } - toggleDateDefaultValue(ev) { - this.state.defaultValue = ev.target.checked ? "this_month" : undefined; - } } EditFilterPanel.template = "spreadsheet_oca.EditFilterPanel"; -EditFilterPanel.components = { ModelSelector, ModelFieldSelector }; +EditFilterPanel.components = {ModelSelector, ModelFieldSelector}; sidePanelRegistry.add("EditFilterPanel", { - title: "Edit Filter", - Body: EditFilterPanel, + title: "Edit Filter", + Body: EditFilterPanel, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index 5e764e1a..26844d77 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -1,304 +1,303 @@ /** @odoo-module **/ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { Component, onWillStart, onWillUpdateProps } from "@odoo/owl"; -import { - makeDynamicCols, - makeDynamicRows, -} from "../utils/dynamic_generators.esm"; -import { Domain } from "@web/core/domain"; -import { DomainSelector } from "@web/core/domain_selector/domain_selector"; -import { DomainSelectorDialog } from "@web/core/domain_selector_dialog/domain_selector_dialog"; -import { FormViewDialog } from "@web/views/view_dialogs/form_view_dialog"; -import { _t } from "@web/core/l10n/translation"; -import { formatDate } from "@web/core/l10n/dates"; -import { useService } from "@web/core/utils/hooks"; +import {Component, onWillStart, onWillUpdateProps} from "@odoo/owl"; +import {makeDynamicCols, makeDynamicRows} from "../utils/dynamic_generators.esm"; +import {Domain} from "@web/core/domain"; +import {DomainSelector} from "@web/core/domain_selector/domain_selector"; +import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; +import {FormViewDialog} from "@web/views/view_dialogs/form_view_dialog"; +import {_t} from "@web/core/l10n/translation"; +import {formatDate} from "@web/core/l10n/dates"; +import {useService} from "@web/core/utils/hooks"; -const { DateTime } = luxon; -const { sidePanelRegistry, topbarMenuRegistry } = spreadsheet.registries; +const {DateTime} = luxon; +const {sidePanelRegistry, topbarMenuRegistry} = spreadsheet.registries; topbarMenuRegistry.addChild("data_sources", ["data"], (env) => { - let sequence = 100; - const children = env.model.getters.getPivotIds().map((pivotId, index) => ({ - id: `data_source_pivot_ ${pivotId}`, - name: env.model.getters.getPivotDisplayName(pivotId), - sequence: sequence++, - execute: (child_env) => { - child_env.model.dispatch("SELECT_PIVOT", { - pivotId: pivotId, - }); - child_env.openSidePanel("PivotPanel", {}); - }, - icon: "spreadsheet_oca.PivotIcon", - separator: index === env.model.getters.getPivotIds().length - 1, - })); - const lists = env.model.getters.getListIds().map((listId, index) => ({ - id: `data_source_list_${listId}`, - name: env.model.getters.getListDisplayName(listId), - sequence: sequence++, - execute: (child_env) => { - child_env.model.dispatch("SELECT_ODOO_LIST", { listId: listId }); - child_env.openSidePanel("ListPanel", {}); - }, - icon: "spreadsheet_oca.ListIcon", - separator: index === env.model.getters.getListIds().length - 1, - })); - return children.concat(lists).concat([ - { - id: "refresh_all_data", - name: _t("Refresh all data"), - sequence: 110, - execute: (child_env) => { - child_env.model.dispatch("REFRESH_ALL_DATA_SOURCES"); - }, - separator: true, - }, - ]); + let sequence = 100; + const children = env.model.getters.getPivotIds().map((pivotId, index) => ({ + id: `data_source_pivot_ ${pivotId}`, + name: env.model.getters.getPivotDisplayName(pivotId), + sequence: sequence++, + execute: (child_env) => { + child_env.model.dispatch("SELECT_PIVOT", { + pivotId: pivotId, + }); + child_env.openSidePanel("PivotPanel", {}); + }, + icon: "spreadsheet_oca.PivotIcon", + separator: index === env.model.getters.getPivotIds().length - 1, + })); + const lists = env.model.getters.getListIds().map((listId, index) => ({ + id: `data_source_list_${listId}`, + name: env.model.getters.getListDisplayName(listId), + sequence: sequence++, + execute: (child_env) => { + child_env.model.dispatch("SELECT_ODOO_LIST", {listId: listId}); + child_env.openSidePanel("ListPanel", {}); + }, + icon: "spreadsheet_oca.ListIcon", + separator: index === env.model.getters.getListIds().length - 1, + })); + return children.concat(lists).concat([ + { + id: "refresh_all_data", + name: _t("Refresh all data"), + sequence: 110, + execute: (child_env) => { + child_env.model.dispatch("REFRESH_ALL_DATA_SOURCES"); + }, + separator: true, + }, + ]); }); export class PivotPanelDisplay extends Component { - setup() { - this.dialog = useService("dialog"); - onWillStart(this.modelData.bind(this)); - onWillUpdateProps(this.modelData.bind(this)); - } - async modelData() { - this.PivotDataSource = await this.env.model.getters.getAsyncPivotDataSource( - this.props.pivotId - ); - this.modelLabel = await this.PivotDataSource.getModelLabel(); - } - get domain() { - return new Domain(this.props.pivotDefinition.domain).toString(); - } - get pivotDimensions() { - return [ - ...this.props.pivotDefinition.rowGroupBys, - ...this.props.pivotDefinition.colGroupBys, - ].map((fieldName) => this.PivotDataSource.getFormattedGroupBy(fieldName)); - } - get sortInformation() { - const sortedColumn = this.props.pivotDefinition.sortedColumn; - const orderTranslate = - sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); - const GroupByDisplayLabel = this.PivotDataSource.getMeasureDisplayName( - sortedColumn.measure - ); - return `${GroupByDisplayLabel} (${orderTranslate})`; - } - get lastUpdate() { - const lastUpdate = this.PivotDataSource.lastUpdate; - if (lastUpdate) { - return formatDate(DateTime.fromMillis(lastUpdate)); + setup() { + this.dialog = useService("dialog"); + onWillStart(this.modelData.bind(this)); + onWillUpdateProps(this.modelData.bind(this)); } - return _t("not updated"); - } - editDomain() { - this.dialog.add(DomainSelectorDialog, { - resModel: this.props.pivotDefinition.model, - domain: this.domain, - readonly: false, - isDebugMode: Boolean(this.env.debug), - onConfirm: this.onSelectDomain.bind(this), - }); - } - onSelectDomain(domain) { - this.env.model.dispatch("UPDATE_ODOO_PIVOT_DOMAIN", { - pivotId: this.props.pivotId, - domain: new Domain(domain).toList(), - }); - } - async insertPivot() { - const datasourceModel = await this.env.model.getters - .getPivotDataSource(this.props.pivotId) - .copyModelWithOriginalDomain(); - const tableStructure = datasourceModel.getTableStructure().export(); - const selectedZone = this.env.model.getters.getSelectedZone(); - this.env.model.dispatch("RE_INSERT_PIVOT", { - id: this.props.pivotId, - col: selectedZone.left, - row: selectedZone.top, - sheetId: this.env.model.getters.getActiveSheetId(), - table: tableStructure, - }); - this.env.model.dispatch("REFRESH_PIVOT", { id: this.props.pivotId }); - } - - async insertDynamicPivot() { - const datasourceModel = await this.env.model.getters - .getPivotDataSource(this.props.pivotId) - .copyModelWithOriginalDomain(); - var { cols, rows, measures } = datasourceModel.getTableStructure().export(); - const { dynamic_rows, number_of_rows, dynamic_cols, number_of_cols } = - await new Promise((resolve) => { - this.dialog.add( - FormViewDialog, - { - title: _t("Select the quantity of rows"), - resModel: "spreadsheet.select.row.number", - context: { - default_can_have_dynamic_cols: Boolean(cols[0][0].fields.length), - }, - onRecordSaved: async (record) => { - resolve({ - dynamic_rows: record.data.dynamic_rows, - number_of_rows: record.data.number_of_rows, - dynamic_cols: record.data.dynamic_cols, - number_of_cols: record.data.number_of_cols, - }); - }, - }, - { onClose: () => resolve(false) } + async modelData() { + this.PivotDataSource = await this.env.model.getters.getAsyncPivotDataSource( + this.props.pivotId ); - }); - if (!dynamic_rows && !dynamic_cols) { - return; + this.modelLabel = await this.PivotDataSource.getModelLabel(); } - if (dynamic_rows) { - const indentations = rows.map((r) => r.indent); - const max_indentation = Math.max(...indentations); - rows = makeDynamicRows( - this.props.pivotDefinition.rowGroupBys, - number_of_rows, - 1, - max_indentation - ); + get domain() { + return new Domain(this.props.pivotDefinition.domain).toString(); } - if (dynamic_cols) { - cols = makeDynamicCols( - this.props.pivotDefinition.colGroupBys, - number_of_cols, - this.props.pivotDefinition.measures - ); + get pivotDimensions() { + return [ + ...this.props.pivotDefinition.rowGroupBys, + ...this.props.pivotDefinition.colGroupBys, + ].map((fieldName) => this.PivotDataSource.getFormattedGroupBy(fieldName)); } - const table = { - cols, - rows, - measures, - }; - const selectedZone = this.env.model.getters.getSelectedZone(); - this.env.model.dispatch("RE_INSERT_PIVOT", { - id: this.props.pivotId, - col: selectedZone.left, - row: selectedZone.top, - sheetId: this.env.model.getters.getActiveSheetId(), - table, - }); - this.env.model.dispatch("REFRESH_PIVOT", { id: this.props.pivotId }); - } - delete() { - this.env.askConfirmation( - _t("Are you sure you want to delete this pivot?"), - () => { - this.env.model.dispatch("REMOVE_PIVOT", { - pivotId: this.props.pivotId, + get sortInformation() { + const sortedColumn = this.props.pivotDefinition.sortedColumn; + const orderTranslate = + sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); + const GroupByDisplayLabel = this.PivotDataSource.getMeasureDisplayName( + sortedColumn.measure + ); + return `${GroupByDisplayLabel} (${orderTranslate})`; + } + get lastUpdate() { + const lastUpdate = this.PivotDataSource.lastUpdate; + if (lastUpdate) { + return formatDate(DateTime.fromMillis(lastUpdate)); + } + return _t("not updated"); + } + editDomain() { + this.dialog.add(DomainSelectorDialog, { + resModel: this.props.pivotDefinition.model, + domain: this.domain, + readonly: false, + isDebugMode: Boolean(this.env.debug), + onConfirm: this.onSelectDomain.bind(this), }); - } - ); - } + } + onSelectDomain(domain) { + this.env.model.dispatch("UPDATE_ODOO_PIVOT_DOMAIN", { + pivotId: this.props.pivotId, + domain: new Domain(domain).toList(), + }); + } + async insertPivot() { + const datasourceModel = await this.env.model.getters + .getPivotDataSource(this.props.pivotId) + .copyModelWithOriginalDomain(); + const tableStructure = datasourceModel.getTableStructure().export(); + const selectedZone = this.env.model.getters.getSelectedZone(); + this.env.model.dispatch("RE_INSERT_PIVOT", { + id: this.props.pivotId, + col: selectedZone.left, + row: selectedZone.top, + sheetId: this.env.model.getters.getActiveSheetId(), + table: tableStructure, + }); + this.env.model.dispatch("REFRESH_PIVOT", {id: this.props.pivotId}); + } + + async insertDynamicPivot() { + const datasourceModel = await this.env.model.getters + .getPivotDataSource(this.props.pivotId) + .copyModelWithOriginalDomain(); + var {cols, rows, measures} = datasourceModel.getTableStructure().export(); + const {dynamic_rows, number_of_rows, dynamic_cols, number_of_cols} = + await new Promise((resolve) => { + this.dialog.add( + FormViewDialog, + { + title: _t("Select the quantity of rows"), + resModel: "spreadsheet.select.row.number", + context: { + default_can_have_dynamic_cols: Boolean( + cols[0][0].fields.length + ), + }, + onRecordSaved: async (record) => { + resolve({ + dynamic_rows: record.data.dynamic_rows, + number_of_rows: record.data.number_of_rows, + dynamic_cols: record.data.dynamic_cols, + number_of_cols: record.data.number_of_cols, + }); + }, + }, + {onClose: () => resolve(false)} + ); + }); + if (!dynamic_rows && !dynamic_cols) { + return; + } + if (dynamic_rows) { + const indentations = rows.map((r) => r.indent); + const max_indentation = Math.max(...indentations); + rows = makeDynamicRows( + this.props.pivotDefinition.rowGroupBys, + number_of_rows, + 1, + max_indentation + ); + } + if (dynamic_cols) { + cols = makeDynamicCols( + this.props.pivotDefinition.colGroupBys, + number_of_cols, + this.props.pivotDefinition.measures + ); + } + const table = { + cols, + rows, + measures, + }; + const selectedZone = this.env.model.getters.getSelectedZone(); + this.env.model.dispatch("RE_INSERT_PIVOT", { + id: this.props.pivotId, + col: selectedZone.left, + row: selectedZone.top, + sheetId: this.env.model.getters.getActiveSheetId(), + table, + }); + this.env.model.dispatch("REFRESH_PIVOT", {id: this.props.pivotId}); + } + delete() { + this.env.askConfirmation( + _t("Are you sure you want to delete this pivot?"), + () => { + this.env.model.dispatch("REMOVE_PIVOT", { + pivotId: this.props.pivotId, + }); + } + ); + } } PivotPanelDisplay.template = "spreadsheet_oca.PivotPanelDisplay"; PivotPanelDisplay.components = { - DomainSelector, + DomainSelector, }; PivotPanelDisplay.properties = { - pivotId: String, - pivotDefinition: Object, + pivotId: String, + pivotDefinition: Object, }; export class PivotPanel extends Component { - get pivotId() { - return this.env.model.getters.getSelectedPivotId(); - } - get pivotDefinition() { - return this.env.model.getters.getPivotDefinition(this.pivotId); - } + get pivotId() { + return this.env.model.getters.getSelectedPivotId(); + } + get pivotDefinition() { + return this.env.model.getters.getPivotDefinition(this.pivotId); + } } PivotPanel.template = "spreadsheet_oca.PivotPanel"; PivotPanel.components = { - PivotPanelDisplay, + PivotPanelDisplay, }; sidePanelRegistry.add("PivotPanel", { - title: "Pivot table information", - Body: PivotPanel, + title: "Pivot table information", + Body: PivotPanel, }); export class ListPanelDisplay extends Component { - setup() { - this.dialog = useService("dialog"); - onWillStart(this.modelData.bind(this)); - onWillUpdateProps(this.modelData.bind(this)); - } - async modelData() { - this.ListDataSource = await this.env.model.getters.getAsyncListDataSource( - this.props.listId - ); - this.modelLabel = await this.ListDataSource.getModelLabel(); - } - get domain() { - return new Domain(this.props.listDefinition.domain).toString(); - } - get lastUpdate() { - const lastUpdate = this.ListDataSource.lastUpdate; - if (lastUpdate) { - return formatDate(DateTime.fromMillis(lastUpdate)); + setup() { + this.dialog = useService("dialog"); + onWillStart(this.modelData.bind(this)); + onWillUpdateProps(this.modelData.bind(this)); + } + async modelData() { + this.ListDataSource = await this.env.model.getters.getAsyncListDataSource( + this.props.listId + ); + this.modelLabel = await this.ListDataSource.getModelLabel(); + } + get domain() { + return new Domain(this.props.listDefinition.domain).toString(); + } + get lastUpdate() { + const lastUpdate = this.ListDataSource.lastUpdate; + if (lastUpdate) { + return formatDate(DateTime.fromMillis(lastUpdate)); + } + return _t("not updated"); } - return _t("not updated"); - } - editDomain() { - this.dialog.add(DomainSelectorDialog, { - resModel: this.props.listDefinition.model, - domain: this.domain, - readonly: false, - isDebugMode: Boolean(this.env.debug), - onConfirm: this.onSelectDomain.bind(this), - }); - } - onSelectDomain(domain) { - this.env.model.dispatch("UPDATE_ODOO_LIST_DOMAIN", { - listId: this.props.listId, - domain: new Domain(domain).toList(), - }); - } - delete() { - this.env.askConfirmation( - _t("Are you sure you want to delete this list?"), - () => { - this.env.model.dispatch("REMOVE_ODOO_LIST", { - listId: this.props.listId, + editDomain() { + this.dialog.add(DomainSelectorDialog, { + resModel: this.props.listDefinition.model, + domain: this.domain, + readonly: false, + isDebugMode: Boolean(this.env.debug), + onConfirm: this.onSelectDomain.bind(this), }); - } - ); - } + } + onSelectDomain(domain) { + this.env.model.dispatch("UPDATE_ODOO_LIST_DOMAIN", { + listId: this.props.listId, + domain: new Domain(domain).toList(), + }); + } + delete() { + this.env.askConfirmation( + _t("Are you sure you want to delete this list?"), + () => { + this.env.model.dispatch("REMOVE_ODOO_LIST", { + listId: this.props.listId, + }); + } + ); + } } ListPanelDisplay.template = "spreadsheet_oca.ListPanelDisplay"; ListPanelDisplay.components = { - DomainSelector, + DomainSelector, }; ListPanelDisplay.properties = { - listId: String, - listDefinition: Object, + listId: String, + listDefinition: Object, }; export class ListPanel extends Component { - get listId() { - return this.env.model.getters.getSelectedListId(); - } - get listDefinition() { - return this.env.model.getters.getListDefinition(this.listId); - } + get listId() { + return this.env.model.getters.getSelectedListId(); + } + get listDefinition() { + return this.env.model.getters.getListDefinition(this.listId); + } } ListPanel.template = "spreadsheet_oca.ListPanel"; ListPanel.components = { - ListPanelDisplay, + ListPanelDisplay, }; sidePanelRegistry.add("ListPanel", { - title: "List information", - Body: ListPanel, + title: "List information", + Body: ListPanel, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index 7bb60767..92785576 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -1,99 +1,99 @@ /** @odoo-module */ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { Domain } from "@web/core/domain"; -import { Many2XAutocomplete } from "@web/views/fields/relational_utils"; -import { useService } from "@web/core/utils/hooks"; -import { _t } from "@web/core/l10n/translation"; +import {Domain} from "@web/core/domain"; +import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; +import {useService} from "@web/core/utils/hooks"; +import {_t} from "@web/core/l10n/translation"; -const { chartSidePanelComponentRegistry } = spreadsheet.registries; -const { LineBarPieDesignPanel } = spreadsheet.components; -const { Component } = owl; +const {chartSidePanelComponentRegistry} = spreadsheet.registries; +const {LineBarPieDesignPanel} = spreadsheet.components; +const {Component} = owl; export class OdooPanel extends Component { - setup() { - this.menus = useService("menu"); - } - get menuProps() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - var result = { - fieldString: _t("Menu Items"), - resModel: "ir.ui.menu", - update: this.updateMenu.bind(this), - activeActions: {}, - getDomain: this.getDomain.bind(this), - }; - if (menu) { - result.value = menu.name; - result.id = menu.id; + setup() { + this.menus = useService("menu"); } - return result; - } - getDomain() { - const menus = this.menus - .getAll() - .map((menu) => menu.id) - .filter((menuId) => menuId !== "root"); - return [["id", "in", menus]]; - } - get menuId() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - if (menu) { - return [menu.id, menu.name]; + get menuProps() { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + var result = { + fieldString: _t("Menu Items"), + resModel: "ir.ui.menu", + update: this.updateMenu.bind(this), + activeActions: {}, + getDomain: this.getDomain.bind(this), + }; + if (menu) { + result.value = menu.name; + result.id = menu.id; + } + return result; } - return false; - } - updateMenu(menuId) { - if (!menuId) { - this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { - chartId: this.props.figureId, - odooMenuId: false, - }); - return; + getDomain() { + const menus = this.menus + .getAll() + .map((menu) => menu.id) + .filter((menuId) => menuId !== "root"); + return [["id", "in", menus]]; + } + get menuId() { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + if (menu) { + return [menu.id, menu.name]; + } + return false; + } + updateMenu(menuId) { + if (!menuId) { + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: false, + }); + return; + } + const menu = this.env.model.getters.getIrMenu(menuId[0].id); + this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { + chartId: this.props.figureId, + odooMenuId: menu.xmlid || menu.id, + }); + } + get record() { + const menus = this.menus + .getAll() + .map((menu) => menu.id) + .filter((menuId) => menuId !== "root"); + return { + getFieldDomain: function () { + return new Domain([["id", "in", menus]]); + }, + getFieldContext: function () { + return {}; + }, + }; } - const menu = this.env.model.getters.getIrMenu(menuId[0].id); - this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { - chartId: this.props.figureId, - odooMenuId: menu.xmlid || menu.id, - }); - } - get record() { - const menus = this.menus - .getAll() - .map((menu) => menu.id) - .filter((menuId) => menuId !== "root"); - return { - getFieldDomain: function () { - return new Domain([["id", "in", menus]]); - }, - getFieldContext: function () { - return {}; - }, - }; - } } OdooPanel.template = "spreadsheet_oca.OdooPanel"; -OdooPanel.components = { Many2XAutocomplete }; +OdooPanel.components = {Many2XAutocomplete}; class OdooStackablePanel extends OdooPanel { - onChangeStacked(ev) { - this.props.updateChart(this.props.figureId, { - stacked: ev.target.checked, - }); - } + onChangeStacked(ev) { + this.props.updateChart(this.props.figureId, { + stacked: ev.target.checked, + }); + } } OdooStackablePanel.template = "spreadsheet_oca.OdooStackablePanel"; chartSidePanelComponentRegistry - .add("odoo_line", { - configuration: OdooStackablePanel, - design: LineBarPieDesignPanel, - }) - .add("odoo_bar", { - configuration: OdooStackablePanel, - design: LineBarPieDesignPanel, - }) - .add("odoo_pie", { - configuration: OdooPanel, - design: LineBarPieDesignPanel, - }); + .add("odoo_line", { + configuration: OdooStackablePanel, + design: LineBarPieDesignPanel, + }) + .add("odoo_bar", { + configuration: OdooStackablePanel, + design: LineBarPieDesignPanel, + }) + .add("odoo_pie", { + configuration: OdooPanel, + design: LineBarPieDesignPanel, + }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 5b15b9e1..45549754 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -3,146 +3,122 @@

- - + +
- - - + +
Pivot name
- + class="o_spreadsheet_oca_datasource_panel_field_title" + >Pivot name
+
-
Model
+
Model
()
+ t-esc="props.pivotDefinition.model" + />)
-
Domain
+
Domain
+ resModel="props.pivotDefinition.model" + domain="domain" + t-key="'pivot_' + props.pivotId" + />
Dimensions
- + class="o_spreadsheet_oca_datasource_panel_field_title" + >Dimensions
+
+ class="o_spreadsheet_oca_datasource_panel_field" + t-if="props.pivotDefinition.sortedColumn" + >
Sorting
+ class="o_spreadsheet_oca_datasource_panel_field_title" + >Sorting
Measures
+ class="o_spreadsheet_oca_datasource_panel_field_title" + >Measures
+ t-foreach="props.pivotDefinition.measures" + t-as="measure" + t-key="measure" + >
Last updated at
-
+
+ t-on-click="insertPivot" + class="btn btn-info" + >Insert pivot - + t-on-click="insertDynamicPivot" + class="btn btn-success" + >Insert dynamic pivot +
-
- - +
List name
- + class="o_spreadsheet_oca_datasource_panel_field_title" + >List name
+
-
Model
+
Model
()
+ t-esc="props.listDefinition.model" + />)
-
Domain
+
Domain
+ resModel="props.listDefinition.model" + domain="domain" + t-key="'list_' + props.listId" + /> @@ -150,48 +126,45 @@
Last updated at
-
+
+ t-on-click="() => this.delete()" + class="btn btn-danger" + >Delete
-
+ t-foreach="env.model.getters.getGlobalFilters()" + t-as="filter" + t-key="filter.id" + class="o_spreadsheet_oca_filter" + >
+ class="fa fa-cog btn btn-link text-muted spreadsheet_oca_filter_value_edit" + t-on-click="() => this.onEditFilter(filter)" + />
+ t-on-click="() => this.onAddFilter('date')" + class="btn" + >Add date + t-on-click="() => this.onAddFilter('relation')" + class="btn" + >Add relation + t-on-click="() => this.onAddFilter('text')" + class="btn" + >Add text
@@ -207,19 +180,15 @@
Time range
+ type="checkbox" + class="me-2" + id="default_to_current_period" + t-att-checked="state.defaultValue" + t-on-change="toggleDateDefaultValue" + /> + for="default_to_current_period" + > Automatically filter on the current period
+ class="pt-3" + t-if="state.defaultValue and state.type === 'date' and state.rangeType !== 'relative'" + >
+ t-if="state.type === 'date' and state.rangeType === 'relative'" + class="spreadsheet_oca_filter_value" + >
+ t-if="state.type === 'text'" + type="text" + class="o_input o_global_filter_default_value" + t-model="state.defaultValue" + />
Related model
+ value="state.modelName.label or ''" + models="models" + onModelSelected.bind="onModelSelected" + />
+ class="o_spreadsheet_oca_filter" + t-foreach="Object.values(state.objects)" + t-as="object" + t-key="object.id" + t-if="object.model" + >
-
-
+
+ path="object.fieldMatch.chain || ''" + resModel="object.model" + readonly="false" + allowEmpty="true" + isDebugMode="!!env.debug" + update="(name) => this.onFieldMatchUpdate(object, name)" + t-key="object_index" + />
-
+
+ type="text" + class="o_spreadsheet_oca_name" + title="Change name" + t-ref="spreadsheetName" + t-att-value="state.name" + t-on-change="_onNameChanged" + /> name is required + class="text-danger o_spreadsheet_oca_name_warning" + t-if="! state.name" + > name is required @@ -398,82 +352,79 @@ - +
+ t-if="collapsedBreadcrumbs.length || visiblePathBreadcrumbs.length" + class="o_breadcrumb d-flex flex-row flex-md-column align-self-stretch justify-content-between min-w-0" + > + t-set="previousBreadcrumb" + t-value="visiblePathBreadcrumbs.slice(-1)" + />
+ class="o_last_breadcrumb_item active d-flex gap-2 align-items-center min-w-0 lh-sm" + > + name="props.record.name" + isReadonly="false" + onChanged="onSpreadsheetNameChanged" + />
@@ -481,13 +432,13 @@
+ class="o_last_breadcrumb_item active d-flex fs-4 min-w-0 align-items-center" + > + name="props.record.name" + isReadonly="false" + onChanged="onSpreadsheetNameChanged" + />
@@ -530,39 +481,35 @@
+ class="o_control_panel d-flex flex-column gap-3 gap-lg-1 px-3 pt-2 pb-3" + t-ref="root" + data-command-category="actions" + >
+ class="o_control_panel_main d-flex flex-wrap flex-lg-nowrap justify-content-between align-items-lg-start gap-3 flex-grow-1" + >
+ class="o_control_panel_breadcrumbs d-flex align-items-center gap-1 order-0 h-lg-100" + >
+ class="o_control_panel_main_buttons d-flex gap-1 d-empty-none d-print-none" + t-ref="mainButtons" + t-on-keydown="onMainButtonsKeydown" + >
+ class="btn-group d-xl-none o_control_panel_collapsed_create" + > -
-
+
@@ -586,70 +531,68 @@ - + +
+ class="o_control_panel_actions d-empty-none d-flex align-items-center justify-content-start justify-content-lg-around order-2 order-lg-1 w-100 w-lg-auto" + >
+ class="o_control_panel_navigation d-flex flex-wrap flex-md-nowrap justify-content-end gap-3 gap-lg-1 gap-xl-3 order-1 order-lg-2 flex-grow-1" + > + class="'o_cp_switch_buttons d-xl-none btn-group'" + togglerClass="'btn btn-secondary'" + showCaret="true" + > - + t-set="activeView" + t-value="env.config.viewSwitcherEntries.find((view) => view.active)" + /> + + t-foreach="env.config.viewSwitcherEntries" + t-as="view" + t-key="view.type" + > + onSelected="() => this.onViewClicked(view.type)" + class="view.active ? 'selected' : ''" + >
+ t-name="spreadsheet_oca.OdooStackablePanel" + t-inherit="spreadsheet_oca.OdooPanel" + t-inherit-mode="primary" + owl="1" + >
@@ -691,10 +634,10 @@ + t-inherit="spreadsheet.o-spreadsheet-BarConfigPanel" + t-inherit-mode="extension" + owl="1" + >
Link to Odoo menu
@@ -705,10 +648,10 @@ + t-inherit="spreadsheet.o-spreadsheet-LineConfigPanel" + t-inherit-mode="extension" + owl="1" + >
Link to Odoo menu
@@ -719,10 +662,10 @@ + t-inherit="spreadsheet.o-spreadsheet-LineBarPieConfigPanel" + t-inherit-mode="extension" + owl="1" + >
Link to Odoo menu
@@ -733,10 +676,10 @@ + t-inherit="spreadsheet.o-spreadsheet-GaugeChartConfigPanel" + t-inherit-mode="extension" + owl="1" + >
Link to Odoo menu
@@ -747,10 +690,10 @@ + t-inherit="spreadsheet.o-spreadsheet-ScorecardChartConfigPanel" + t-inherit-mode="extension" + owl="1" + >
Link to Odoo menu
diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js index b91f92d1..d14d7b36 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -1,294 +1,291 @@ /** @odoo-module **/ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { - makeDynamicCols, - makeDynamicRows, -} from "../utils/dynamic_generators.esm"; -import { ListDataSource } from "@spreadsheet/list/list_data_source"; -import { PivotDataSource } from "@spreadsheet/pivot/pivot_data_source"; -import { SpreadsheetControlPanel } from "./spreadsheet_controlpanel.esm"; -import { SpreadsheetRenderer } from "./spreadsheet_renderer.esm"; -import { registry } from "@web/core/registry"; -import { useService } from "@web/core/utils/hooks"; +import {makeDynamicCols, makeDynamicRows} from "../utils/dynamic_generators.esm"; +import {ListDataSource} from "@spreadsheet/list/list_data_source"; +import {PivotDataSource} from "@spreadsheet/pivot/pivot_data_source"; +import {SpreadsheetControlPanel} from "./spreadsheet_controlpanel.esm"; +import {SpreadsheetRenderer} from "./spreadsheet_renderer.esm"; +import {registry} from "@web/core/registry"; +import {useService} from "@web/core/utils/hooks"; const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); const actionRegistry = registry.category("actions"); -const { Component, onMounted, onWillStart, useSubEnv } = owl; +const {Component, onMounted, onWillStart, useSubEnv} = owl; export class ActionSpreadsheetOca extends Component { - setup() { - this.router = useService("router"); - this.orm = useService("orm"); - this.notification = useService("notification"); - const params = this.props.action.params || this.props.action.context.params; - this.spreadsheetId = params.spreadsheet_id; - this.model = params.model || "spreadsheet.spreadsheet"; - this.import_data = params.import_data || {}; - onMounted(() => { - this.router.pushState({ - spreadsheet_id: this.spreadsheetId, - model: this.model, - }); - }); - onWillStart(async () => { - // We need to load in case the data comes from an XLSX - this.record = - spreadsheet.load( - await this.orm.call( - this.model, - "get_spreadsheet_data", - [[this.spreadsheetId]], - { context: { bin_size: false } } - ) - ) || {}; - }); - useSubEnv({ - saveRecord: this.saveRecord.bind(this), - importData: this.importData.bind(this), - notifyUser: this.notifyUser.bind(this), - }); - } - notifyUser(notification) { - this.notification.add(notification.text, { - type: notification.type, - sticky: notification.sticky, - }); - } - async saveRecord(data) { - if (this.record.mode === "readonly") { - return; + setup() { + this.router = useService("router"); + this.orm = useService("orm"); + this.notification = useService("notification"); + const params = this.props.action.params || this.props.action.context.params; + this.spreadsheetId = params.spreadsheet_id; + this.model = params.model || "spreadsheet.spreadsheet"; + this.import_data = params.import_data || {}; + onMounted(() => { + this.router.pushState({ + spreadsheet_id: this.spreadsheetId, + model: this.model, + }); + }); + onWillStart(async () => { + // We need to load in case the data comes from an XLSX + this.record = + spreadsheet.load( + await this.orm.call( + this.model, + "get_spreadsheet_data", + [[this.spreadsheetId]], + {context: {bin_size: false}} + ) + ) || {}; + }); + useSubEnv({ + saveRecord: this.saveRecord.bind(this), + importData: this.importData.bind(this), + notifyUser: this.notifyUser.bind(this), + }); } - if (this.spreadsheetId) { - this.orm.call(this.model, "write", [this.spreadsheetId, data]); - } else { - this.spreadsheetId = await this.orm.call(this.model, "create", [data]); - this.router.pushState({ spreadsheet_id: this.spreadsheetId }); + notifyUser(notification) { + this.notification.add(notification.text, { + type: notification.type, + sticky: notification.sticky, + }); } - } - /** - * Clean SearchParams of conflictive keys. - * - * 1. Removed from context pivot conflictive keys. - * 2. Removed from context graph conflictive keys. - * - * @returns {Object} Formated searchParams. - */ - cleanSearchParams() { - const searchParams = this.import_data.searchParams; - const context = {}; - for (var key of Object.keys(searchParams.context)) { - if (key.startsWith("pivot_") || key.startsWith("graph_")) { - continue; - } - context[key] = searchParams.context[key]; - } - return { ...searchParams, context }; - } - async importDataGraph(spreadsheet_model) { - var sheetId = spreadsheet_model.getters.getActiveSheetId(); - var y = 0; - if (this.import_data.new === undefined && this.import_data.new_sheet) { - sheetId = uuidGenerator.uuidv4(); - spreadsheet_model.dispatch("CREATE_SHEET", { - sheetId, - position: spreadsheet_model.getters.getSheetIds().length, - }); - // We want to open the new sheet - const sheetIdFrom = spreadsheet_model.getters.getActiveSheetId(); - spreadsheet_model.dispatch("ACTIVATE_SHEET", { - sheetIdFrom, - sheetIdTo: sheetId, - }); - } else if (this.import_data.new === undefined) { - // TODO: Add a way to detect the last row total height - } - const dataSourceId = uuidGenerator.uuidv4(); - const definition = { - title: this.import_data.name, - type: "odoo_" + this.import_data.metaData.mode, - background: "#FFFFFF", - stacked: this.import_data.metaData.stacked, - metaData: this.import_data.metaData, - searchParams: this.cleanSearchParams(), - dataSourceId: dataSourceId, - legendPosition: "top", - verticalAxisPosition: "left", - }; - spreadsheet_model.dispatch("CREATE_CHART", { - sheetId, - id: dataSourceId, - position: { - x: 0, - y: y, - }, - definition, - }); - } - importCreateOrReuseSheet(spreadsheet_model) { - var sheetId = spreadsheet_model.getters.getActiveSheetId(); - var row = 0; - if (this.import_data.new === undefined && this.import_data.new_sheet) { - sheetId = uuidGenerator.uuidv4(); - spreadsheet_model.dispatch("CREATE_SHEET", { - sheetId, - position: spreadsheet_model.getters.getSheetIds().length, - }); - // We want to open the new sheet - const sheetIdFrom = spreadsheet_model.getters.getActiveSheetId(); - spreadsheet_model.dispatch("ACTIVATE_SHEET", { - sheetIdFrom, - sheetIdTo: sheetId, - }); - } else if (this.import_data.new === undefined) { - row = spreadsheet_model.getters.getNumberRows(sheetId); - var maxcols = spreadsheet_model.getters.getNumberCols(sheetId); - var filled = false; - while (row >= 0) { - for (var col = maxcols; col >= 0; col--) { - if ( - spreadsheet_model.getters.getCell(sheetId, col, row) !== - undefined && - !spreadsheet_model.getters.getCell(sheetId, col, row).isEmpty() - ) { - filled = true; - break; - } + async saveRecord(data) { + if (this.record.mode === "readonly") { + return; } - if (filled) { - break; + if (this.spreadsheetId) { + this.orm.call(this.model, "write", [this.spreadsheetId, data]); + } else { + this.spreadsheetId = await this.orm.call(this.model, "create", [data]); + this.router.pushState({spreadsheet_id: this.spreadsheetId}); } - row -= 1; - } - row += 1; } - return { sheetId, row }; - } - async importDataList(spreadsheet_model) { - var { sheetId, row } = this.importCreateOrReuseSheet(spreadsheet_model); - const dataSourceId = uuidGenerator.uuidv4(); - var list_info = { - metaData: { - resModel: this.import_data.metaData.model, - columns: this.import_data.metaData.columns.map((column) => column.name), - fields: this.import_data.metaData.fields, - }, - searchParams: { - domain: this.import_data.metaData.domain, - context: this.import_data.metaData.context, - orderBy: this.import_data.metaData.orderBy, - }, - name: this.import_data.name, - }; - const dataSource = spreadsheet_model.config.custom.dataSources.add( - dataSourceId, - ListDataSource, - list_info - ); - await dataSource.load(); - spreadsheet_model.dispatch("INSERT_ODOO_LIST", { - sheetId, - col: 0, - row: row, - id: spreadsheet_model.getters.getNextListId(), - dataSourceId, - definition: list_info, - linesNumber: this.import_data.dyn_number_of_rows, - columns: this.import_data.metaData.columns, - }); - const columns = []; - for (let col = 0; col < this.import_data.metaData.columns.length; col++) { - columns.push(col); - } - spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { - sheetId, - cols: columns, - }); - } - async importDataPivot(spreadsheet_model) { - var { sheetId, row } = this.importCreateOrReuseSheet(spreadsheet_model); - const dataSourceId = uuidGenerator.uuidv4(); - const colGroupBys = this.import_data.metaData.colGroupBys.concat( - this.import_data.metaData.expandedColGroupBys - ); - const rowGroupBys = this.import_data.metaData.rowGroupBys.concat( - this.import_data.metaData.expandedRowGroupBys - ); - const pivot_info = { - metaData: { - colGroupBys, - rowGroupBys, - activeMeasures: this.import_data.metaData.activeMeasures, - resModel: this.import_data.metaData.resModel, - sortedColumn: this.import_data.metaData.sortedColumn, - }, - searchParams: this.cleanSearchParams(), - name: this.import_data.name, - }; - const dataSource = spreadsheet_model.config.custom.dataSources.add( - dataSourceId, - PivotDataSource, - pivot_info - ); - await dataSource.load(); - var { cols, rows, measures } = dataSource.getTableStructure().export(); - if (this.import_data.dyn_number_of_rows) { - const indentations = rows.map((r) => r.indent); - const max_indentation = Math.max(...indentations); - rows = makeDynamicRows( - rowGroupBys, - this.import_data.dyn_number_of_rows, - 1, - max_indentation - ); + /** + * Clean SearchParams of conflictive keys. + * + * 1. Removed from context pivot conflictive keys. + * 2. Removed from context graph conflictive keys. + * + * @returns {Object} Formated searchParams. + */ + cleanSearchParams() { + const searchParams = this.import_data.searchParams; + const context = {}; + for (var key of Object.keys(searchParams.context)) { + if (key.startsWith("pivot_") || key.startsWith("graph_")) { + continue; + } + context[key] = searchParams.context[key]; + } + return {...searchParams, context}; } - if (this.import_data.dyn_number_of_cols) { - cols = makeDynamicCols( - colGroupBys, - this.import_data.dyn_number_of_cols, - this.import_data.metaData.activeMeasures - ); + async importDataGraph(spreadsheet_model) { + var sheetId = spreadsheet_model.getters.getActiveSheetId(); + var y = 0; + if (this.import_data.new === undefined && this.import_data.new_sheet) { + sheetId = uuidGenerator.uuidv4(); + spreadsheet_model.dispatch("CREATE_SHEET", { + sheetId, + position: spreadsheet_model.getters.getSheetIds().length, + }); + // We want to open the new sheet + const sheetIdFrom = spreadsheet_model.getters.getActiveSheetId(); + spreadsheet_model.dispatch("ACTIVATE_SHEET", { + sheetIdFrom, + sheetIdTo: sheetId, + }); + } else if (this.import_data.new === undefined) { + // TODO: Add a way to detect the last row total height + } + const dataSourceId = uuidGenerator.uuidv4(); + const definition = { + title: this.import_data.name, + type: "odoo_" + this.import_data.metaData.mode, + background: "#FFFFFF", + stacked: this.import_data.metaData.stacked, + metaData: this.import_data.metaData, + searchParams: this.cleanSearchParams(), + dataSourceId: dataSourceId, + legendPosition: "top", + verticalAxisPosition: "left", + }; + spreadsheet_model.dispatch("CREATE_CHART", { + sheetId, + id: dataSourceId, + position: { + x: 0, + y: y, + }, + definition, + }); } - const table = { - cols, - rows, - measures, - }; - spreadsheet_model.dispatch("INSERT_PIVOT", { - sheetId, - col: 0, - row: row, - id: spreadsheet_model.getters.getNextPivotId(), - table, - dataSourceId, - definition: pivot_info, - }); - const columns = []; - for (let col = 0; col < table.cols[table.cols.length - 1].length; col++) { - columns.push(col); + importCreateOrReuseSheet(spreadsheet_model) { + var sheetId = spreadsheet_model.getters.getActiveSheetId(); + var row = 0; + if (this.import_data.new === undefined && this.import_data.new_sheet) { + sheetId = uuidGenerator.uuidv4(); + spreadsheet_model.dispatch("CREATE_SHEET", { + sheetId, + position: spreadsheet_model.getters.getSheetIds().length, + }); + // We want to open the new sheet + const sheetIdFrom = spreadsheet_model.getters.getActiveSheetId(); + spreadsheet_model.dispatch("ACTIVATE_SHEET", { + sheetIdFrom, + sheetIdTo: sheetId, + }); + } else if (this.import_data.new === undefined) { + row = spreadsheet_model.getters.getNumberRows(sheetId); + var maxcols = spreadsheet_model.getters.getNumberCols(sheetId); + var filled = false; + while (row >= 0) { + for (var col = maxcols; col >= 0; col--) { + if ( + spreadsheet_model.getters.getCell(sheetId, col, row) !== + undefined && + !spreadsheet_model.getters.getCell(sheetId, col, row).isEmpty() + ) { + filled = true; + break; + } + } + if (filled) { + break; + } + row -= 1; + } + row += 1; + } + return {sheetId, row}; } - spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { - sheetId, - cols: columns, - }); - } - async importData(spreadsheet_model) { - if (this.import_data.mode === "pivot") { - await this.importDataPivot(spreadsheet_model); + async importDataList(spreadsheet_model) { + var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); + const dataSourceId = uuidGenerator.uuidv4(); + var list_info = { + metaData: { + resModel: this.import_data.metaData.model, + columns: this.import_data.metaData.columns.map((column) => column.name), + fields: this.import_data.metaData.fields, + }, + searchParams: { + domain: this.import_data.metaData.domain, + context: this.import_data.metaData.context, + orderBy: this.import_data.metaData.orderBy, + }, + name: this.import_data.name, + }; + const dataSource = spreadsheet_model.config.custom.dataSources.add( + dataSourceId, + ListDataSource, + list_info + ); + await dataSource.load(); + spreadsheet_model.dispatch("INSERT_ODOO_LIST", { + sheetId, + col: 0, + row: row, + id: spreadsheet_model.getters.getNextListId(), + dataSourceId, + definition: list_info, + linesNumber: this.import_data.dyn_number_of_rows, + columns: this.import_data.metaData.columns, + }); + const columns = []; + for (let col = 0; col < this.import_data.metaData.columns.length; col++) { + columns.push(col); + } + spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { + sheetId, + cols: columns, + }); } - if (this.import_data.mode === "graph") { - await this.importDataGraph(spreadsheet_model); + async importDataPivot(spreadsheet_model) { + var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); + const dataSourceId = uuidGenerator.uuidv4(); + const colGroupBys = this.import_data.metaData.colGroupBys.concat( + this.import_data.metaData.expandedColGroupBys + ); + const rowGroupBys = this.import_data.metaData.rowGroupBys.concat( + this.import_data.metaData.expandedRowGroupBys + ); + const pivot_info = { + metaData: { + colGroupBys, + rowGroupBys, + activeMeasures: this.import_data.metaData.activeMeasures, + resModel: this.import_data.metaData.resModel, + sortedColumn: this.import_data.metaData.sortedColumn, + }, + searchParams: this.cleanSearchParams(), + name: this.import_data.name, + }; + const dataSource = spreadsheet_model.config.custom.dataSources.add( + dataSourceId, + PivotDataSource, + pivot_info + ); + await dataSource.load(); + var {cols, rows, measures} = dataSource.getTableStructure().export(); + if (this.import_data.dyn_number_of_rows) { + const indentations = rows.map((r) => r.indent); + const max_indentation = Math.max(...indentations); + rows = makeDynamicRows( + rowGroupBys, + this.import_data.dyn_number_of_rows, + 1, + max_indentation + ); + } + if (this.import_data.dyn_number_of_cols) { + cols = makeDynamicCols( + colGroupBys, + this.import_data.dyn_number_of_cols, + this.import_data.metaData.activeMeasures + ); + } + const table = { + cols, + rows, + measures, + }; + spreadsheet_model.dispatch("INSERT_PIVOT", { + sheetId, + col: 0, + row: row, + id: spreadsheet_model.getters.getNextPivotId(), + table, + dataSourceId, + definition: pivot_info, + }); + const columns = []; + for (let col = 0; col < table.cols[table.cols.length - 1].length; col++) { + columns.push(col); + } + spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { + sheetId, + cols: columns, + }); } - if (this.import_data.mode === "list") { - await this.importDataList(spreadsheet_model); + async importData(spreadsheet_model) { + if (this.import_data.mode === "pivot") { + await this.importDataPivot(spreadsheet_model); + } + if (this.import_data.mode === "graph") { + await this.importDataGraph(spreadsheet_model); + } + if (this.import_data.mode === "list") { + await this.importDataList(spreadsheet_model); + } } - } } ActionSpreadsheetOca.template = "spreadsheet_oca.ActionSpreadsheetOca"; ActionSpreadsheetOca.components = { - SpreadsheetRenderer, - SpreadsheetControlPanel, + SpreadsheetRenderer, + SpreadsheetControlPanel, }; actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, { - force: true, + force: true, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js index 37a92b5b..9a3cecd1 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js @@ -1,31 +1,31 @@ /** @odoo-module **/ -import { Component } from "@odoo/owl"; -import { ControlPanel } from "@web/search/control_panel/control_panel"; +import {Component} from "@odoo/owl"; +import {ControlPanel} from "@web/search/control_panel/control_panel"; -const { useState } = owl; +const {useState} = owl; export class SpreadsheetName extends Component { - setup() { - this.state = useState({ - name: this.props.name, - }); - } - _onNameChanged(ev) { - if (ev.target.value) { - this.env.saveRecord({ name: ev.target.value }); + setup() { + this.state = useState({ + name: this.props.name, + }); + } + _onNameChanged(ev) { + if (ev.target.value) { + this.env.saveRecord({name: ev.target.value}); + } + this.state.name = ev.target.value; } - this.state.name = ev.target.value; - } } SpreadsheetName.template = "spreadsheet_oca.SpreadsheetName"; export class SpreadsheetControlPanel extends ControlPanel {} SpreadsheetControlPanel.template = "spreadsheet_oca.SpreadsheetControlPanel"; SpreadsheetControlPanel.props = { - ...ControlPanel.props, - record: Object, + ...ControlPanel.props, + record: Object, }; SpreadsheetControlPanel.components = { - SpreadsheetName, + SpreadsheetName, }; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js index bf586890..1627274e 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js @@ -1,188 +1,185 @@ /** @odoo-module **/ import * as spreadsheet from "@odoo/o-spreadsheet"; -import { Component } from "@odoo/owl"; -import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_dialog"; -import { DataSources } from "@spreadsheet/data_sources/data_sources"; -import { Dialog } from "@web/core/dialog/dialog"; -import { Field } from "@web/views/fields/field"; -import { _t } from "@web/core/l10n/translation"; -import { loadSpreadsheetDependencies } from "@spreadsheet/assets_backend/helpers"; -import { migrate } from "@spreadsheet/o_spreadsheet/migration"; -import { useService } from "@web/core/utils/hooks"; -import { useSetupAction } from "@web/webclient/actions/action_hook"; -import { waitForDataLoaded } from "@spreadsheet/helpers/model"; -import { createDefaultCurrencyFormat } from "@spreadsheet/currency/helpers"; +import {Component} from "@odoo/owl"; +import {ConfirmationDialog} from "@web/core/confirmation_dialog/confirmation_dialog"; +import {DataSources} from "@spreadsheet/data_sources/data_sources"; +import {Dialog} from "@web/core/dialog/dialog"; +import {Field} from "@web/views/fields/field"; +import {_t} from "@web/core/l10n/translation"; +import {loadSpreadsheetDependencies} from "@spreadsheet/assets_backend/helpers"; +import {migrate} from "@spreadsheet/o_spreadsheet/migration"; +import {useService} from "@web/core/utils/hooks"; +import {useSetupAction} from "@web/webclient/actions/action_hook"; +import {waitForDataLoaded} from "@spreadsheet/helpers/model"; +import {createDefaultCurrencyFormat} from "@spreadsheet/currency/helpers"; -const { Spreadsheet, Model } = spreadsheet; -const { useSubEnv, onWillStart } = owl; +const {Spreadsheet, Model} = spreadsheet; +const {useSubEnv, onWillStart} = owl; const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); class SpreadsheetTransportService { - constructor(orm, bus_service, model, res_id) { - this.orm = orm; - this.bus_service = bus_service; - this.model = model; - this.res_id = res_id; - this.channel = "spreadsheet_oca;" + this.model + ";" + this.res_id; - this.bus_service.addChannel(this.channel); - this.bus_service.addEventListener( - "notification", - this.onNotification.bind(this) - ); - this.listeners = []; - } - onNotification({ detail: notifications }) { - for (const { payload, type } of notifications) { - if ( - type === "spreadsheet_oca" && - payload.res_model === this.model && - payload.res_id === this.res_id - ) { - // What shall we do if no callback is defined (empty until onNewMessage...) :/ - for (const { callback } of this.listeners) { - callback(payload); + constructor(orm, bus_service, model, res_id) { + this.orm = orm; + this.bus_service = bus_service; + this.model = model; + this.res_id = res_id; + this.channel = "spreadsheet_oca;" + this.model + ";" + this.res_id; + this.bus_service.addChannel(this.channel); + this.bus_service.addEventListener( + "notification", + this.onNotification.bind(this) + ); + this.listeners = []; + } + onNotification({detail: notifications}) { + for (const {payload, type} of notifications) { + if ( + type === "spreadsheet_oca" && + payload.res_model === this.model && + payload.res_id === this.res_id + ) { + // What shall we do if no callback is defined (empty until onNewMessage...) :/ + for (const {callback} of this.listeners) { + callback(payload); + } + } } - } } - } - sendMessage(message) { - this.orm.call(this.model, "send_spreadsheet_message", [ - [this.res_id], - message, - ]); - } - onNewMessage(id, callback) { - this.listeners.push({ id, callback }); - } - leave(id) { - this.listeners = this.listeners.filter((listener) => listener.id !== id); - } + sendMessage(message) { + this.orm.call(this.model, "send_spreadsheet_message", [[this.res_id], message]); + } + onNewMessage(id, callback) { + this.listeners.push({id, callback}); + } + leave(id) { + this.listeners = this.listeners.filter((listener) => listener.id !== id); + } } export class SpreadsheetRenderer extends Component { - getLocales() { - const orm = useService("orm"); - return async () => { - return orm.call("res.lang", "get_locales_for_spreadsheet", []); - }; - } - getCurrencies() { - const orm = useService("orm"); - return async () => { - const odooCurrencies = await orm.searchRead( - "res.currency", - [], - ["symbol", "full_name", "position", "name", "decimal_places"], - { - order: "active DESC, full_name ASC", - context: { active_test: false }, - } - ); - return odooCurrencies.map((currency) => { - return { - code: currency.name, - symbol: currency.symbol, - position: currency.position || "after", - name: currency.full_name || _t("Currency"), - decimalPlaces: currency.decimal_places || 2, + getLocales() { + const orm = useService("orm"); + return async () => { + return orm.call("res.lang", "get_locales_for_spreadsheet", []); + }; + } + getCurrencies() { + const orm = useService("orm"); + return async () => { + const odooCurrencies = await orm.searchRead( + "res.currency", + [], + ["symbol", "full_name", "position", "name", "decimal_places"], + { + order: "active DESC, full_name ASC", + context: {active_test: false}, + } + ); + return odooCurrencies.map((currency) => { + return { + code: currency.name, + symbol: currency.symbol, + position: currency.position || "after", + name: currency.full_name || _t("Currency"), + decimalPlaces: currency.decimal_places || 2, + }; + }); }; - }); - }; - } - setup() { - this.orm = useService("orm"); - this.bus_service = this.env.services.bus_service; - this.user = useService("user"); - this.ui = useService("ui"); - this.action = useService("action"); - this.dialog = useService("dialog"); - const dataSources = new DataSources(this.env); - this.confirmDialog = this.closeDialog; - this.loadCurrencies = this.getCurrencies(); - this.loadLocales = this.getLocales(); - const defaultCurrency = this.props.record.default_currency; - const defaultCurrencyFormat = defaultCurrency - ? createDefaultCurrencyFormat(defaultCurrency) - : undefined; - this.spreadsheet_model = new Model( - migrate(this.props.record.spreadsheet_raw), - { - custom: { env: this.env, orm: this.orm, dataSources }, - defaultCurrencyFormat, - external: { - loadCurrencies: this.loadCurrencies, - loadLocales: this.loadLocales, - }, - transportService: new SpreadsheetTransportService( - this.orm, - this.bus_service, - this.props.model, - this.props.res_id - ), - client: { - id: uuidGenerator.uuidv4(), - name: this.user.name, - }, - mode: this.props.record.mode, - }, - this.props.record.revisions - ); - useSubEnv({ - saveSpreadsheet: this.onSpreadsheetSaved.bind(this), - askConfirmation: this.askConfirmation.bind(this), - downloadAsXLXS: this.downloadAsXLXS.bind(this), - }); - onWillStart(async () => { - await loadSpreadsheetDependencies(); - await dataSources.waitForAllLoaded(); - await this.env.importData(this.spreadsheet_model); - }); - useSetupAction({ - beforeLeave: () => this.onSpreadsheetSaved(), - }); - dataSources.addEventListener("data-source-updated", () => { - const sheetId = this.spreadsheet_model.getters.getActiveSheetId(); - this.spreadsheet_model.dispatch("EVALUATE_CELLS", { sheetId }); - }); - } - onSpreadsheetSaved() { - const data = this.spreadsheet_model.exportData(); - this.env.saveRecord({ spreadsheet_raw: data }); - this.spreadsheet_model.leaveSession(); - } - askConfirmation(content, confirm) { - this.dialog.add(ConfirmationDialog, { - title: _t("Odoo Spreadsheet"), - body: content, - confirm, - confirmLabel: _t("Confirm"), - }); - } - async downloadAsXLXS() { - this.ui.block(); - await waitForDataLoaded(this.spreadsheet_model); - await this.action.doAction({ - type: "ir.actions.client", - tag: "action_download_spreadsheet", - params: { - name: this.props.record.name, - xlsxData: this.spreadsheet_model.exportXLSX(), - }, - }); - this.ui.unblock(); - } + } + setup() { + this.orm = useService("orm"); + this.bus_service = this.env.services.bus_service; + this.user = useService("user"); + this.ui = useService("ui"); + this.action = useService("action"); + this.dialog = useService("dialog"); + const dataSources = new DataSources(this.env); + this.confirmDialog = this.closeDialog; + this.loadCurrencies = this.getCurrencies(); + this.loadLocales = this.getLocales(); + const defaultCurrency = this.props.record.default_currency; + const defaultCurrencyFormat = defaultCurrency + ? createDefaultCurrencyFormat(defaultCurrency) + : undefined; + this.spreadsheet_model = new Model( + migrate(this.props.record.spreadsheet_raw), + { + custom: {env: this.env, orm: this.orm, dataSources}, + defaultCurrencyFormat, + external: { + loadCurrencies: this.loadCurrencies, + loadLocales: this.loadLocales, + }, + transportService: new SpreadsheetTransportService( + this.orm, + this.bus_service, + this.props.model, + this.props.res_id + ), + client: { + id: uuidGenerator.uuidv4(), + name: this.user.name, + }, + mode: this.props.record.mode, + }, + this.props.record.revisions + ); + useSubEnv({ + saveSpreadsheet: this.onSpreadsheetSaved.bind(this), + askConfirmation: this.askConfirmation.bind(this), + downloadAsXLXS: this.downloadAsXLXS.bind(this), + }); + onWillStart(async () => { + await loadSpreadsheetDependencies(); + await dataSources.waitForAllLoaded(); + await this.env.importData(this.spreadsheet_model); + }); + useSetupAction({ + beforeLeave: () => this.onSpreadsheetSaved(), + }); + dataSources.addEventListener("data-source-updated", () => { + const sheetId = this.spreadsheet_model.getters.getActiveSheetId(); + this.spreadsheet_model.dispatch("EVALUATE_CELLS", {sheetId}); + }); + } + onSpreadsheetSaved() { + const data = this.spreadsheet_model.exportData(); + this.env.saveRecord({spreadsheet_raw: data}); + this.spreadsheet_model.leaveSession(); + } + askConfirmation(content, confirm) { + this.dialog.add(ConfirmationDialog, { + title: _t("Odoo Spreadsheet"), + body: content, + confirm, + confirmLabel: _t("Confirm"), + }); + } + async downloadAsXLXS() { + this.ui.block(); + await waitForDataLoaded(this.spreadsheet_model); + await this.action.doAction({ + type: "ir.actions.client", + tag: "action_download_spreadsheet", + params: { + name: this.props.record.name, + xlsxData: this.spreadsheet_model.exportXLSX(), + }, + }); + this.ui.unblock(); + } } SpreadsheetRenderer.template = "spreadsheet_oca.SpreadsheetRenderer"; SpreadsheetRenderer.components = { - Spreadsheet, - Field, - Dialog, + Spreadsheet, + Field, + Dialog, }; SpreadsheetRenderer.props = { - record: Object, - res_id: { type: Number, optional: true }, - model: String, - importData: { type: Function, optional: true }, + record: Object, + res_id: {type: Number, optional: true}, + model: String, + importData: {type: Function, optional: true}, }; diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js index e0de39dc..fac9eeaa 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js @@ -1,23 +1,25 @@ /** @odoo-module **/ -import { GraphRenderer } from "@web/views/graph/graph_renderer"; +import {GraphRenderer} from "@web/views/graph/graph_renderer"; -import { patch } from "@web/core/utils/patch"; +import {patch} from "@web/core/utils/patch"; patch(GraphRenderer.prototype, { - onSpreadsheetButtonClicked() { - this.actionService.doAction( - "spreadsheet_oca.spreadsheet_spreadsheet_import_act_window", - { - additionalContext: { - default_name: this.model.metaData.title, - default_datasource_name: this.model.metaData.title, - default_import_data: { - mode: "graph", - metaData: JSON.parse(JSON.stringify(this.model.metaData)), - searchParams: JSON.parse(JSON.stringify(this.model.searchParams)), - }, - }, - } - ); - }, + onSpreadsheetButtonClicked() { + this.actionService.doAction( + "spreadsheet_oca.spreadsheet_spreadsheet_import_act_window", + { + additionalContext: { + default_name: this.model.metaData.title, + default_datasource_name: this.model.metaData.title, + default_import_data: { + mode: "graph", + metaData: JSON.parse(JSON.stringify(this.model.metaData)), + searchParams: JSON.parse( + JSON.stringify(this.model.searchParams) + ), + }, + }, + } + ); + }, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml b/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml index 553bae42..37b6e49a 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml @@ -3,13 +3,12 @@ diff --git a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml index 56571699..52e7d30f 100644 --- a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml +++ b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml @@ -2,58 +2,45 @@ - - spreadsheet.spreadsheet.search (in spreadsheet_oca) + spreadsheet.spreadsheet.search (in spreadsheet_oca) spreadsheet.spreadsheet - - - + - spreadsheet.spreadsheet.tree (in spreadsheet_oca) + spreadsheet.spreadsheet.tree (in spreadsheet_oca) spreadsheet.spreadsheet

@@ -62,33 +49,27 @@ + name="company_id" + groups="base.group_multi_company" + /> + - + name="contributor_group_ids" + widget="many2many_tags" + /> - + + name="spreadsheet_binary_data" + filename="filename" + groups="base.group_no_one" + /> @@ -97,10 +78,7 @@ - + Spreadsheets spreadsheet.spreadsheet tree,form @@ -111,14 +89,8 @@ Spreadsheets - spreadsheet_oca,static/description/icon.png - + spreadsheet_oca,static/description/icon.png + - diff --git a/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml b/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml index 8c1d060f..538c0756 100644 --- a/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml +++ b/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml @@ -1,6 +1,5 @@ - spreadsheet.select.row.number.form spreadsheet.select.row.number @@ -9,23 +8,16 @@ - + - + name="dynamic_cols" + invisible='not can_have_dynamic_cols' + /> + - diff --git a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml index 1f4fdf9c..a89c78ed 100644 --- a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml +++ b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml @@ -2,11 +2,10 @@ - spreadsheet.spreadsheet.import.form (in spreadsheet_oca) + name="name" + >spreadsheet.spreadsheet.import.form (in spreadsheet_oca) spreadsheet.spreadsheet.import
@@ -14,73 +13,67 @@ + name="name" + invisible="mode != 'new'" + required="mode == 'new'" + /> + name="spreadsheet_id" + domain="['|', ('owner_id', '=', uid), ('contributor_ids', '=', uid)]" + invisible="mode not in ['add', 'add_sheet']" + required="mode in ['add', 'add_sheet']" + options="{'no_create': True}" + /> + name="dynamic" + force_save="1" + invisible='not can_be_dynamic' + readonly='is_tree' + /> + name="number_of_rows" + invisible='not dynamic' + required='dynamic' + /> + name="dynamic_cols" + force_save="1" + invisible='not can_have_dynamic_cols or is_tree' + /> + name="number_of_cols" + invisible='not dynamic_cols' + required='dynamic_cols' + />
+ model="ir.actions.act_window" + id="spreadsheet_spreadsheet_import_act_window" + > Import Pivot spreadsheet.spreadsheet.import form {} new - -
From cd7e799a8352dc8c45e919d9fe28f635970ab10d Mon Sep 17 00:00:00 2001 From: Chris Mann Date: Wed, 24 Sep 2025 14:16:26 +0100 Subject: [PATCH 150/235] [MIG] spreadsheet_oca: Migration to 18.0 --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 27 +-- .../migrations/17.0.1.0.0/pre-migrate.py | 17 -- spreadsheet_oca/models/ir_websocket.py | 2 +- .../models/spreadsheet_abstract.py | 48 +++- spreadsheet_oca/static/description/index.html | 80 ++++--- .../static/src/pivot/pivot_table.esm.js | 3 +- .../src/spreadsheet/bundle/chart_panel.esm.js | 2 - .../spreadsheet/bundle/chart_panels.esm.js | 33 ++- .../src/spreadsheet/bundle/filter.esm.js | 72 ++++-- .../bundle/filter_panel_datasources.esm.js | 205 ++++++++---------- .../bundle/image_file_store.esm.js | 33 +++ .../src/spreadsheet/bundle/odoo_panels.esm.js | 81 ++++++- .../src/spreadsheet/bundle/spreadsheet.xml | 99 +++------ .../bundle/spreadsheet_action.esm.js | 200 ++++++++--------- .../bundle/spreadsheet_controlpanel.esm.js | 25 ++- .../bundle/spreadsheet_renderer.esm.js | 122 +++++++---- .../src/spreadsheet/graph_controller.esm.js | 1 - .../src/spreadsheet/graph_controller.xml | 7 +- .../src/spreadsheet/list_controller.esm.js | 1 - .../src/spreadsheet/list_controller.xml | 15 +- .../src/spreadsheet/list_renderer.esm.js | 19 +- .../src/spreadsheet/pivot_controller.esm.js | 16 +- .../src/spreadsheet/pivot_controller.xml | 7 +- .../src/spreadsheet/spreadsheet_action.esm.js | 22 +- .../utils/dynamic_generators.esm.js | 3 +- .../spreadsheet_tree_view.esm.js | 2 - .../views/spreadsheet_spreadsheet.xml | 6 +- .../wizards/spreadsheet_spreadsheet_import.py | 2 +- .../spreadsheet_spreadsheet_import.xml | 8 +- 30 files changed, 661 insertions(+), 499 deletions(-) delete mode 100644 spreadsheet_oca/migrations/17.0.1.0.0/pre-migrate.py create mode 100644 spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 8ddb4f8f..7908f90c 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -7,7 +7,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:2e54effb5771467ddab39e872bcddddc5e7a900f7afb88dd3bb87ac26d195ca5 + !! source digest: sha256:a7edc105b2730d126fc787ef8ef2c8c1d293b8e18e94402ff7db7d044ee863cd !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 553f0364..f065bd7f 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "17.0.1.0.3", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", @@ -25,28 +25,19 @@ "spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml", "spreadsheet_oca/static/src/spreadsheet/spreadsheet.scss", "spreadsheet_oca/static/src/spreadsheet/spreadsheet_action.esm.js", - "spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js", - "spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js", "spreadsheet_oca/static/src/spreadsheet/list_controller.esm.js", "spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js", - ( - "after", - "web/static/src/views/graph/graph_controller.xml", - "spreadsheet_oca/static/src/spreadsheet/graph_controller.xml", - ), - ( - "after", - "web/static/src/views/list/list_controller.xml", - "spreadsheet_oca/static/src/spreadsheet/list_controller.xml", - ), - ( - "after", - "web/static/src/views/pivot/pivot_controller.xml", - "spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml", - ), + "spreadsheet_oca/static/src/spreadsheet/list_controller.xml", + ], + "web.assets_backend_lazy": [ + "spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js", + "spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js", + "spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml", + "spreadsheet_oca/static/src/spreadsheet/graph_controller.xml", ], "spreadsheet.o_spreadsheet": [ "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml", + "spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js", diff --git a/spreadsheet_oca/migrations/17.0.1.0.0/pre-migrate.py b/spreadsheet_oca/migrations/17.0.1.0.0/pre-migrate.py deleted file mode 100644 index 8e329591..00000000 --- a/spreadsheet_oca/migrations/17.0.1.0.0/pre-migrate.py +++ /dev/null @@ -1,17 +0,0 @@ -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - # Renamed field data to spreadsheet_binary_data in V17 - openupgrade.rename_fields( - env, - [ - ( - "spreadsheet.spreadsheet", - "spreadsheet_spreadsheet", - "data", - "spreadsheet_binary_data", - ), - ], - ) diff --git a/spreadsheet_oca/models/ir_websocket.py b/spreadsheet_oca/models/ir_websocket.py index 1987b564..005f41c5 100644 --- a/spreadsheet_oca/models/ir_websocket.py +++ b/spreadsheet_oca/models/ir_websocket.py @@ -58,9 +58,9 @@ def _build_bus_channel_list(self, channels): channels.append( ( self.env.registry.db_name, - "spreadsheet_oca", model_name, res_id, + "spreadsheet_oca", ) ) return super()._build_bus_channel_list(channels) diff --git a/spreadsheet_oca/models/spreadsheet_abstract.py b/spreadsheet_oca/models/spreadsheet_abstract.py index 0e1280b5..c43be6bb 100644 --- a/spreadsheet_oca/models/spreadsheet_abstract.py +++ b/spreadsheet_oca/models/spreadsheet_abstract.py @@ -3,14 +3,18 @@ import base64 import json +from typing import Any from odoo import _, api, fields, models from odoo.exceptions import AccessError +CollaborationMessage = dict[str, Any] + class SpreadsheetAbstract(models.AbstractModel): _name = "spreadsheet.abstract" _description = "Spreadsheet abstract for inheritance" + _inherit = ["bus.listener.mixin"] name = fields.Char(required=True) spreadsheet_binary_data = fields.Binary( @@ -76,8 +80,7 @@ def get_spreadsheet_data(self): self.ensure_one() mode = "normal" try: - self.check_access_rights("write") - self.check_access_rule("write") + self.check_access("write") except AccessError: mode = "readonly" return { @@ -106,11 +109,31 @@ def open_spreadsheet(self): "params": {"spreadsheet_id": self.id, "model": self._name}, } - def send_spreadsheet_message(self, message): + def send_spreadsheet_message( + self, message: CollaborationMessage, access_token=None + ): self.ensure_one() - channel = (self.env.cr.dbname, "spreadsheet_oca", self._name, self.id) - message.update({"res_model": self._name, "res_id": self.id}) if message["type"] in ["REVISION_UNDONE", "REMOTE_REVISION", "REVISION_REDONE"]: + self._check_access_spreadsheet("write") + self.env["spreadsheet.oca.revision"].create( + { + "model": self._name, + "res_id": self.id, + "type": message["type"], + "client_id": message.get("clientId"), + "next_revision_id": message["nextRevisionId"], + "server_revision_id": message["serverRevisionId"], + "commands": json.dumps( + self._build_spreadsheet_revision_commands_data(message) + ), + } + ) + self._bus_send( + "notification", dict(message, id=self.id), subchannel="spreadsheet_oca" + ) + return True + elif message["type"] == "SNAPSHOT": + self._check_access_spreadsheet("write") self.env["spreadsheet.oca.revision"].create( { "model": self._name, @@ -124,7 +147,20 @@ def send_spreadsheet_message(self, message): ), } ) - self.env["bus.bus"]._sendone(channel, "spreadsheet_oca", message) + return True + elif message["type"] in ["CLIENT_JOINED", "CLIENT_LEFT", "CLIENT_MOVED"]: + self._check_access_spreadsheet("read") + self._bus_send( + "notification", dict(message, id=self.id), subchannel="spreadsheet_oca" + ) + return True + return False + + def _check_access_spreadsheet(self, operation: str): + try: + self.check_access(operation) + except AccessError as e: + raise e return True @api.model diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 7bae2017..b9fe162e 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +Spreadsheet Oca -
+
+

Spreadsheet Oca

- - -Odoo Community Association - -
-

Spreadsheet Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets using Odoo CE.

It is an alternative to the proprietary module spreadsheet_edition @@ -402,56 +397,56 @@

Spreadsheet Oca

-

Usage

+

Usage

-

Create a new spreadsheet

+

Create a new spreadsheet

  • Go to ‘Spreadsheet’ menu
  • Click on ‘Create’
  • Put a name, then click on the “Edit” button
-

image1

+

image1

  • At this point you switch to spreadsheet editing mode. The editor is named o-spreadsheet and looks like another common spreadsheet web editors. (OnlyOffice, Ethercalc, Google Sheets (non-free)).
-

image2

+

image2

-

image3

+

image3

  • Note: Business Odoo module can add “business functions”. This is -currently the case for the accounting module, which adds the following -features:

    +currently the case for the accounting module, which adds the +following features:

      -
    • ODOO.CREDIT(account_codes, date_range): Get the total credit -for the specified account(s) and period.
    • +
    • ODOO.CREDIT(account_codes, date_range): Get the total +credit for the specified account(s) and period.
    • ODOO.DEBIT(account_codes, date_range): Get the total debit for the specified account(s) and period.
    • ODOO.BALANCE(account_codes, date_range): Get the total balance for the specified account(s) and period.
    • -
    • ODOO.FISCALYEAR.START(day): Returns the starting date of the -fiscal year encompassing the provided date.
    • +
    • ODOO.FISCALYEAR.START(day): Returns the starting date of +the fiscal year encompassing the provided date.
    • ODOO.FISCALYEAR.END(day): Returns the ending date of the fiscal year encompassing the provided date.
    • -
    • ODOO.ACCOUNT.GROUP(type): Returns the account ids of a given -group where type should be a value of the account_type field -of account.account model. (income, asset_receivable, -etc.)
    • +
    • ODOO.ACCOUNT.GROUP(type): Returns the account ids of a +given group where type should be a value of the +account_type field of account.account model. +(income, asset_receivable, etc.)
-

Create a new dynamic spreadsheet from pivot

+

Create a new dynamic spreadsheet from pivot

-

Development

+

Development

If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

-

Known issues / Roadmap

+

Known issues / Roadmap

-

Adding new lines on pivot tables

+

Adding new lines on pivot tables

When we add a pivot table, the number of rows is predefined according to the current data.

In order to add new rows, we need to reinsert the pivot table.

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -545,11 +540,10 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/spreadsheet project on GitHub.

+

This module is part of the OCA/spreadsheet project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

-
diff --git a/spreadsheet_oca/static/src/pivot/pivot_table.esm.js b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js index 3202d542..0ce658c8 100644 --- a/spreadsheet_oca/static/src/pivot/pivot_table.esm.js +++ b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js @@ -1,7 +1,6 @@ -/** @odoo-module */ /* Copyright 2024 Tecnativa - Carlos Roca * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ -import {SpreadsheetPivotTable} from "@spreadsheet/pivot/pivot_table"; +import {SpreadsheetPivotTable} from "@odoo/o-spreadsheet"; import {patch} from "@web/core/utils/patch"; patch(SpreadsheetPivotTable.prototype, { diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js index a98cf157..b6a1d23b 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js @@ -1,5 +1,3 @@ -/** @odoo-module */ - import * as spreadsheet from "@odoo/o-spreadsheet"; import {patch} from "@web/core/utils/patch"; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js index 8bda4972..e42f6706 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js @@ -1,15 +1,17 @@ -/** @odoo-module */ - import * as spreadsheet from "@odoo/o-spreadsheet"; import {Domain} from "@web/core/domain"; - import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; +import {_t} from "@web/core/l10n/translation"; import {patch} from "@web/core/utils/patch"; import {useService} from "@web/core/utils/hooks"; -import {_t} from "@web/core/l10n/translation"; -const {LineBarPieConfigPanel, ScorecardChartConfigPanel, GaugeChartConfigPanel} = - spreadsheet.components; +const { + GenericChartConfigPanel, + LineConfigPanel, + BarConfigPanel, + ScorecardChartConfigPanel, + GaugeChartConfigPanel, +} = spreadsheet.components; const menuChartProps = { setup() { @@ -55,7 +57,6 @@ const menuChartProps = { return; } const menu = this.env.model.getters.getIrMenu(menuId[0].id); - console.log(menu); this.env.model.dispatch("LINK_ODOO_MENU_TO_CHART", { chartId: this.props.figureId, odooMenuId: menu.xmlid || menu.id, @@ -77,9 +78,21 @@ const menuChartProps = { }, }; -patch(LineBarPieConfigPanel.prototype, menuChartProps); -LineBarPieConfigPanel.components = { - ...LineBarPieConfigPanel.components, +patch(GenericChartConfigPanel.prototype, menuChartProps); +GenericChartConfigPanel.components = { + ...GenericChartConfigPanel.components, + Many2XAutocomplete, +}; + +patch(LineConfigPanel.prototype, menuChartProps); +LineConfigPanel.components = { + ...LineConfigPanel.components, + Many2XAutocomplete, +}; + +patch(BarConfigPanel.prototype, menuChartProps); +BarConfigPanel.components = { + ...BarConfigPanel.components, Many2XAutocomplete, }; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index 7076f88f..a5fabc63 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -1,12 +1,12 @@ -/** @odoo-module **/ - import * as spreadsheet from "@odoo/o-spreadsheet"; import {Component, onWillStart, useState} from "@odoo/owl"; -import {_lt, _t} from "@web/core/l10n/translation"; + import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; import {ModelSelector} from "@web/core/model_selector/model_selector"; import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; + +import {_t} from "@web/core/l10n/translation"; import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; import {useService} from "@web/core/utils/hooks"; @@ -123,10 +123,10 @@ export class EditFilterPanel extends Component { get dateOffset() { return [ {value: 0, name: ""}, - {value: -1, name: _lt("Previous")}, - {value: -2, name: _lt("Before Previous")}, - {value: 1, name: _lt("Next")}, - {value: 2, name: _lt("After next")}, + {value: -1, name: _t("Previous")}, + {value: -2, name: _t("Before Previous")}, + {value: 1, name: _t("Next")}, + {value: 2, name: _t("After next")}, ]; } onChangeFieldMatchOffset(object, ev) { @@ -144,8 +144,8 @@ export class EditFilterPanel extends Component { const action = this.props.filter.id ? "EDIT_GLOBAL_FILTER" : "ADD_GLOBAL_FILTER"; - this.env.openSidePanel("FilterPanel", {}); - var filter = { + + const filter = { id: this.props.filter.id || uuidGenerator.uuidv4(), type: this.state.type, label: this.state.label, @@ -153,17 +153,16 @@ export class EditFilterPanel extends Component { rangeType: this.state.rangeType, modelName: this.state.modelName.technical, }; - var filterMatching = {}; + const filterMatching = {}; Object.values(this.state.objects).forEach((object) => { filterMatching[object.type] = filterMatching[object.type] || {}; - filterMatching[object.type][object.objectId] = {...object.fieldMatch}; + const fieldMatch = object.fieldMatch ? {...object.fieldMatch} : {}; + filterMatching[object.type][object.objectId] = fieldMatch; }); this.env.model.dispatch(action, { - id: filter.id, filter, ...filterMatching, }); - this.env.openSidePanel("FilterPanel", {}); } onCancel() { @@ -177,13 +176,54 @@ export class EditFilterPanel extends Component { } this.env.openSidePanel("FilterPanel", {}); } - onFieldMatchUpdate(object, name) { - this.state.objects[object.id].fieldMatch.chain = name; - this.state.objects[object.id].fieldMatch.type = object.fields[name]?.type; + onFieldMatchUpdate(object, path, fieldInfo) { + if (!path) { + // Clear the field match if no path selected + this.state.objects[object.id].fieldMatch = {}; + return; + } + // Extract field definition from fieldInfo (V18> structure) + const fieldDef = + fieldInfo && fieldInfo.fieldDef ? fieldInfo.fieldDef : fieldInfo; + this.state.objects[object.id].fieldMatch = { + chain: path, + type: fieldDef?.type || "", + }; } toggleDateDefaultValue(ev) { this.state.defaultValue = ev.target.checked ? "this_month" : undefined; } + getModelField(fieldMatch) { + if (!fieldMatch || !fieldMatch.chain) { + return ""; + } + return fieldMatch.chain; + } + filterModelFieldSelectorField(field, path, coModel) { + if (!field.searchable) { + return false; + } + + // TODO: Define allowed field types based on filter type + const ALLOWED_FIELD_TYPES = [ + "char", + "text", + "selection", + "many2one", + "date", + "datetime", + ]; + + if (field.name === "id" && this.state.type === "relation") { + const paths = path.split("."); + const lastField = paths.at(-2); + if (!lastField || (lastField.relation && lastField.relation === coModel)) { + return true; + } + return false; + } + return ALLOWED_FIELD_TYPES.includes(field.type) || Boolean(field.relation); + } } EditFilterPanel.template = "spreadsheet_oca.EditFilterPanel"; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index 26844d77..0706956c 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -1,46 +1,30 @@ -/** @odoo-module **/ - import * as spreadsheet from "@odoo/o-spreadsheet"; -import {Component, onWillStart, onWillUpdateProps} from "@odoo/owl"; -import {makeDynamicCols, makeDynamicRows} from "../utils/dynamic_generators.esm"; +import {Component, onWillStart, onWillUpdateProps, useState} from "@odoo/owl"; import {Domain} from "@web/core/domain"; import {DomainSelector} from "@web/core/domain_selector/domain_selector"; import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; -import {FormViewDialog} from "@web/views/view_dialogs/form_view_dialog"; import {_t} from "@web/core/l10n/translation"; import {formatDate} from "@web/core/l10n/dates"; import {useService} from "@web/core/utils/hooks"; const {DateTime} = luxon; -const {sidePanelRegistry, topbarMenuRegistry} = spreadsheet.registries; +const {sidePanelRegistry, topbarMenuRegistry, pivotSidePanelRegistry} = + spreadsheet.registries; topbarMenuRegistry.addChild("data_sources", ["data"], (env) => { - let sequence = 100; - const children = env.model.getters.getPivotIds().map((pivotId, index) => ({ - id: `data_source_pivot_ ${pivotId}`, - name: env.model.getters.getPivotDisplayName(pivotId), - sequence: sequence++, - execute: (child_env) => { - child_env.model.dispatch("SELECT_PIVOT", { - pivotId: pivotId, - }); - child_env.openSidePanel("PivotPanel", {}); - }, - icon: "spreadsheet_oca.PivotIcon", - separator: index === env.model.getters.getPivotIds().length - 1, - })); + let sequence = 53; const lists = env.model.getters.getListIds().map((listId, index) => ({ id: `data_source_list_${listId}`, name: env.model.getters.getListDisplayName(listId), sequence: sequence++, execute: (child_env) => { child_env.model.dispatch("SELECT_ODOO_LIST", {listId: listId}); - child_env.openSidePanel("ListPanel", {}); + child_env.openSidePanel("ListPanel", {listId}); }, icon: "spreadsheet_oca.ListIcon", separator: index === env.model.getters.getListIds().length - 1, })); - return children.concat(lists).concat([ + return lists.concat([ { id: "refresh_all_data", name: _t("Refresh all data"), @@ -60,28 +44,32 @@ export class PivotPanelDisplay extends Component { onWillUpdateProps(this.modelData.bind(this)); } async modelData() { - this.PivotDataSource = await this.env.model.getters.getAsyncPivotDataSource( - this.props.pivotId - ); + this.PivotDataSource = this.env.model.getters.getPivot(this.props.pivotId); this.modelLabel = await this.PivotDataSource.getModelLabel(); } get domain() { return new Domain(this.props.pivotDefinition.domain).toString(); } get pivotDimensions() { - return [ - ...this.props.pivotDefinition.rowGroupBys, - ...this.props.pivotDefinition.colGroupBys, - ].map((fieldName) => this.PivotDataSource.getFormattedGroupBy(fieldName)); + const {rows = [], columns = []} = this.props.pivotDefinition; + return [...rows, ...columns].map((dim) => { + const label = dim.displayName || dim.fieldName; + return dim.granularity ? `${label} (${dim.granularity})` : label; + }); } get sortInformation() { const sortedColumn = this.props.pivotDefinition.sortedColumn; const orderTranslate = sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); - const GroupByDisplayLabel = this.PivotDataSource.getMeasureDisplayName( - sortedColumn.measure - ); - return `${GroupByDisplayLabel} (${orderTranslate})`; + + let label = null; + if (sortedColumn.measure) { + const measure = this.PivotDataSource.getMeasure(sortedColumn.measure); + label = measure ? measure.displayName : sortedColumn.measure; + } else if (sortedColumn.groupBy) { + label = this.PivotDataSource.getFormattedGroupBy(sortedColumn.groupBy); + } + return `${label} (${orderTranslate})`; } get lastUpdate() { const lastUpdate = this.PivotDataSource.lastUpdate; @@ -106,84 +94,50 @@ export class PivotPanelDisplay extends Component { }); } async insertPivot() { - const datasourceModel = await this.env.model.getters - .getPivotDataSource(this.props.pivotId) - .copyModelWithOriginalDomain(); - const tableStructure = datasourceModel.getTableStructure().export(); - const selectedZone = this.env.model.getters.getSelectedZone(); - this.env.model.dispatch("RE_INSERT_PIVOT", { - id: this.props.pivotId, - col: selectedZone.left, - row: selectedZone.top, - sheetId: this.env.model.getters.getActiveSheetId(), - table: tableStructure, + const pivotId = this.props.pivotId; + const {type} = this.env.model.getters.getPivotCoreDefinition(pivotId); + const position = this.env.model.getters.getActivePosition(); + let table = null; + if (type === "ODOO") { + const dataSource = this.env.model.getters.getPivot(pivotId); + const model = await dataSource.copyModelWithOriginalDomain(); + table = model.getTableStructure().export(); + } else { + table = this.env.model.getters + .getPivot(pivotId) + .getTableStructure() + .export(); + } + this.env.model.dispatch("INSERT_PIVOT_WITH_TABLE", { + ...position, + pivotId, + table, + pivotMode: "static", }); - this.env.model.dispatch("REFRESH_PIVOT", {id: this.props.pivotId}); + this.env.model.dispatch("REFRESH_PIVOT", {id: pivotId}); } - async insertDynamicPivot() { - const datasourceModel = await this.env.model.getters - .getPivotDataSource(this.props.pivotId) - .copyModelWithOriginalDomain(); - var {cols, rows, measures} = datasourceModel.getTableStructure().export(); - const {dynamic_rows, number_of_rows, dynamic_cols, number_of_cols} = - await new Promise((resolve) => { - this.dialog.add( - FormViewDialog, - { - title: _t("Select the quantity of rows"), - resModel: "spreadsheet.select.row.number", - context: { - default_can_have_dynamic_cols: Boolean( - cols[0][0].fields.length - ), - }, - onRecordSaved: async (record) => { - resolve({ - dynamic_rows: record.data.dynamic_rows, - number_of_rows: record.data.number_of_rows, - dynamic_cols: record.data.dynamic_cols, - number_of_cols: record.data.number_of_cols, - }); - }, - }, - {onClose: () => resolve(false)} - ); - }); - if (!dynamic_rows && !dynamic_cols) { - return; - } - if (dynamic_rows) { - const indentations = rows.map((r) => r.indent); - const max_indentation = Math.max(...indentations); - rows = makeDynamicRows( - this.props.pivotDefinition.rowGroupBys, - number_of_rows, - 1, - max_indentation - ); + const pivotId = this.props.pivotId; + const {type} = this.env.model.getters.getPivotCoreDefinition(pivotId); + const position = this.env.model.getters.getActivePosition(); + let table = null; + if (type === "ODOO") { + const dataSource = this.env.model.getters.getPivot(this.props.pivotId); + const model = await dataSource.copyModelWithOriginalDomain(); + table = model.getTableStructure().export(); + } else { + table = this.env.model.getters + .getPivot(this.props.pivotId) + .getTableStructure() + .export(); } - if (dynamic_cols) { - cols = makeDynamicCols( - this.props.pivotDefinition.colGroupBys, - number_of_cols, - this.props.pivotDefinition.measures - ); - } - const table = { - cols, - rows, - measures, - }; - const selectedZone = this.env.model.getters.getSelectedZone(); - this.env.model.dispatch("RE_INSERT_PIVOT", { - id: this.props.pivotId, - col: selectedZone.left, - row: selectedZone.top, - sheetId: this.env.model.getters.getActiveSheetId(), + this.env.model.dispatch("INSERT_PIVOT_WITH_TABLE", { + ...position, + pivotId, table, + pivotMode: "dynamic", }); - this.env.model.dispatch("REFRESH_PIVOT", {id: this.props.pivotId}); + this.env.model.dispatch("REFRESH_PIVOT", {id: pivotId}); } delete() { this.env.askConfirmation( @@ -208,10 +162,14 @@ PivotPanelDisplay.properties = { export class PivotPanel extends Component { get pivotId() { - return this.env.model.getters.getSelectedPivotId(); + return this.props.pivotId; + } + get pivotType() { + return this.env.model.getters.getPivotCoreDefinition(this.pivotId).type; } get pivotDefinition() { - return this.env.model.getters.getPivotDefinition(this.pivotId); + const dataSource = this.env.model.getters.getPivot(this.pivotId); + return dataSource ? dataSource.definition || {} : {}; } } @@ -220,13 +178,13 @@ PivotPanel.components = { PivotPanelDisplay, }; -sidePanelRegistry.add("PivotPanel", { - title: "Pivot table information", - Body: PivotPanel, +pivotSidePanelRegistry.add("ODOO", { + editor: PivotPanel, }); export class ListPanelDisplay extends Component { setup() { + this.state = useState({listRows: undefined}); this.dialog = useService("dialog"); onWillStart(this.modelData.bind(this)); onWillUpdateProps(this.modelData.bind(this)); @@ -262,6 +220,26 @@ export class ListPanelDisplay extends Component { domain: new Domain(domain).toList(), }); } + async insertList() { + const listId = this.props.listId; + const zone = this.env.model.getters.getSelectedZone(); + const dataSource = await this.env.model.getters.getAsyncListDataSource(listId); + const totalRows = parseInt(this.state.listRows, 10) || dataSource.maxPosition; + const list = this.env.model.getters.getListDefinition(listId); + const sheetId = this.env.model.getters.getActiveSheetId(); + const columns = list.columns.map((name) => ({ + name, + type: dataSource.getField(name).type, + })); + this.env.model.dispatch("RE_INSERT_ODOO_LIST_WITH_TABLE", { + sheetId: sheetId, + col: zone.left, + row: zone.top, + id: listId, + linesNumber: totalRows, + columns: columns, + }); + } delete() { this.env.askConfirmation( _t("Are you sure you want to delete this list?"), @@ -269,6 +247,7 @@ export class ListPanelDisplay extends Component { this.env.model.dispatch("REMOVE_ODOO_LIST", { listId: this.props.listId, }); + this.env.openSidePanel("ListPanel", {}); } ); } @@ -278,17 +257,17 @@ ListPanelDisplay.template = "spreadsheet_oca.ListPanelDisplay"; ListPanelDisplay.components = { DomainSelector, }; -ListPanelDisplay.properties = { +ListPanelDisplay.props = { listId: String, listDefinition: Object, }; export class ListPanel extends Component { get listId() { - return this.env.model.getters.getSelectedListId(); + return this.props.listId; } get listDefinition() { - return this.env.model.getters.getListDefinition(this.listId); + return this.env.model.getters.getListDefinition(this.listId) || {}; } } diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js new file mode 100644 index 00000000..919524e8 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/image_file_store.esm.js @@ -0,0 +1,33 @@ +export class ImageFileStore { + constructor(resModel, resId, http, orm) { + this.resModel = resModel; + this.resId = resId; + this.http = http; + this.orm = orm; + } + + async upload(file) { + const route = "/web/binary/upload_attachment"; + const params = { + ufile: [file], + csrf_token: odoo.csrf_token, + model: this.resModel, + id: this.resId, + }; + const fileData = JSON.parse(await this.http.post(route, params, "text"))[0]; + const [accessToken] = await this.orm.call( + "ir.attachment", + "generate_access_token", + [fileData.id] + ); + return `/web/image/${fileData.id}?access_token=${accessToken}`; + } + + async delete(path) { + const attachmentId = path.split("/").pop(); + if (Number.isNaN(attachmentId)) { + throw new Error("Invalid path: " + path); + } + await this.orm.unlink("ir.attachment", [parseInt(attachmentId, 10)]); + } +} diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index 92785576..dfbe770a 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -1,13 +1,12 @@ -/** @odoo-module */ - import * as spreadsheet from "@odoo/o-spreadsheet"; + import {Domain} from "@web/core/domain"; import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; -import {useService} from "@web/core/utils/hooks"; import {_t} from "@web/core/l10n/translation"; +import {useService} from "@web/core/utils/hooks"; -const {chartSidePanelComponentRegistry} = spreadsheet.registries; -const {LineBarPieDesignPanel} = spreadsheet.components; +const {chartSidePanelComponentRegistry, chartSubtypeRegistry} = spreadsheet.registries; +const {PieChartDesignPanel} = spreadsheet.components; const {Component} = owl; export class OdooPanel extends Component { @@ -87,13 +86,79 @@ OdooStackablePanel.template = "spreadsheet_oca.OdooStackablePanel"; chartSidePanelComponentRegistry .add("odoo_line", { configuration: OdooStackablePanel, - design: LineBarPieDesignPanel, + design: PieChartDesignPanel, }) .add("odoo_bar", { configuration: OdooStackablePanel, - design: LineBarPieDesignPanel, + design: PieChartDesignPanel, }) .add("odoo_pie", { configuration: OdooPanel, - design: LineBarPieDesignPanel, + design: PieChartDesignPanel, }); + +chartSubtypeRegistry.add("odoo_line", { + matcher: (definition) => + definition.type === "odoo_line" && !definition.stacked && !definition.fillArea, + subtypeDefinition: {stacked: false, fillArea: false}, + displayName: _t("Line"), + chartSubtype: "odoo_line", + chartType: "odoo_line", + category: "line", + preview: "o-spreadsheet-ChartPreview.LINE_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_line", { + matcher: (definition) => + definition.type === "odoo_line" && definition.stacked && !definition.fillArea, + subtypeDefinition: {stacked: true, fillArea: false}, + displayName: _t("Stacked Line"), + chartSubtype: "odoo_stacked_line", + chartType: "odoo_line", + category: "line", + preview: "o-spreadsheet-ChartPreview.STACKED_LINE_CHART", +}); +chartSubtypeRegistry.add("odoo_area", { + matcher: (definition) => + definition.type === "odoo_line" && !definition.stacked && definition.fillArea, + subtypeDefinition: {stacked: false, fillArea: true}, + displayName: _t("Area"), + chartSubtype: "odoo_area", + chartType: "odoo_line", + category: "area", + preview: "o-spreadsheet-ChartPreview.AREA_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_area", { + matcher: (definition) => + definition.type === "odoo_line" && definition.stacked && definition.fillArea, + subtypeDefinition: {stacked: true, fillArea: true}, + displayName: _t("Stacked Area"), + chartSubtype: "odoo_stacked_area", + chartType: "odoo_line", + category: "area", + preview: "o-spreadsheet-ChartPreview.STACKED_AREA_CHART", +}); +chartSubtypeRegistry.add("odoo_bar", { + matcher: (definition) => definition.type === "odoo_bar" && !definition.stacked, + subtypeDefinition: {stacked: false}, + displayName: _t("Column"), + chartSubtype: "odoo_bar", + chartType: "odoo_bar", + category: "column", + preview: "o-spreadsheet-ChartPreview.COLUMN_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_bar", { + matcher: (definition) => definition.type === "odoo_bar" && definition.stacked, + subtypeDefinition: {stacked: true}, + displayName: _t("Stacked Column"), + chartSubtype: "odoo_stacked_bar", + chartType: "odoo_bar", + category: "column", + preview: "o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART", +}); +chartSubtypeRegistry.add("odoo_pie", { + displayName: _t("Pie"), + chartSubtype: "odoo_pie", + chartType: "odoo_pie", + category: "pie", + preview: "o-spreadsheet-ChartPreview.PIE_CHART", +}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 45549754..242124ba 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -67,14 +67,11 @@ -
+
-
- Last updated at -
+
+ Last updated at +
@@ -123,15 +123,32 @@ Edit domain

-
- Last updated at -
+
+
+ + +
+
+ Last updated at +
@@ -276,12 +293,13 @@
@@ -311,7 +329,7 @@
- + @@ -444,34 +463,6 @@
- @@ -633,11 +624,7 @@
- +
Link to Odoo menu
@@ -647,11 +634,7 @@
- +
Link to Odoo menu
@@ -661,11 +644,7 @@
- +
Link to Odoo menu
@@ -675,11 +654,7 @@
- +
Link to Odoo menu
@@ -689,11 +664,7 @@
- +
Link to Odoo menu
diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js index d14d7b36..5055a15c 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -1,37 +1,45 @@ -/** @odoo-module **/ - import * as spreadsheet from "@odoo/o-spreadsheet"; -import {makeDynamicCols, makeDynamicRows} from "../utils/dynamic_generators.esm"; -import {ListDataSource} from "@spreadsheet/list/list_data_source"; -import {PivotDataSource} from "@spreadsheet/pivot/pivot_data_source"; + +import {Domain} from "@web/core/domain"; import {SpreadsheetControlPanel} from "./spreadsheet_controlpanel.esm"; import {SpreadsheetRenderer} from "./spreadsheet_renderer.esm"; +import {deepCopy} from "@web/core/utils/objects"; +import {helpers} from "@odoo/o-spreadsheet"; import {registry} from "@web/core/registry"; +import {standardActionServiceProps} from "@web/webclient/actions/action_service"; import {useService} from "@web/core/utils/hooks"; +const {load} = spreadsheet; + const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); const actionRegistry = registry.category("actions"); -const {Component, onMounted, onWillStart, useSubEnv} = owl; +const {Component, onWillStart, useSubEnv} = owl; +const {parseDimension, isDateOrDatetimeField} = helpers; + +function normalizeGroupBys(dimensions, fields) { + return dimensions.map((dimension) => { + if ( + isDateOrDatetimeField(fields[dimension.fieldName]) && + !dimension.granularity + ) { + return {granularity: "month", ...dimension}; + } + return dimension; + }); +} export class ActionSpreadsheetOca extends Component { setup() { - this.router = useService("router"); this.orm = useService("orm"); this.notification = useService("notification"); const params = this.props.action.params || this.props.action.context.params; - this.spreadsheetId = params.spreadsheet_id; + this.spreadsheetId = params.spreadsheet_id || params.active_id; this.model = params.model || "spreadsheet.spreadsheet"; this.import_data = params.import_data || {}; - onMounted(() => { - this.router.pushState({ - spreadsheet_id: this.spreadsheetId, - model: this.model, - }); - }); onWillStart(async () => { // We need to load in case the data comes from an XLSX this.record = - spreadsheet.load( + load( await this.orm.call( this.model, "get_spreadsheet_data", @@ -46,6 +54,7 @@ export class ActionSpreadsheetOca extends Component { notifyUser: this.notifyUser.bind(this), }); } + notifyUser(notification) { this.notification.add(notification.text, { type: notification.type, @@ -60,7 +69,6 @@ export class ActionSpreadsheetOca extends Component { this.orm.call(this.model, "write", [this.spreadsheetId, data]); } else { this.spreadsheetId = await this.orm.call(this.model, "create", [data]); - this.router.pushState({spreadsheet_id: this.spreadsheetId}); } } /** @@ -84,7 +92,6 @@ export class ActionSpreadsheetOca extends Component { } async importDataGraph(spreadsheet_model) { var sheetId = spreadsheet_model.getters.getActiveSheetId(); - var y = 0; if (this.import_data.new === undefined && this.import_data.new_sheet) { sheetId = uuidGenerator.uuidv4(); spreadsheet_model.dispatch("CREATE_SHEET", { @@ -101,23 +108,29 @@ export class ActionSpreadsheetOca extends Component { // TODO: Add a way to detect the last row total height } const dataSourceId = uuidGenerator.uuidv4(); + const chartType = `odoo_${this.import_data.metaData.mode}`; const definition = { - title: this.import_data.name, - type: "odoo_" + this.import_data.metaData.mode, + title: {text: this.import_data.name}, + type: chartType, + fillArea: chartType === "odoo_line", background: "#FFFFFF", stacked: this.import_data.metaData.stacked, metaData: this.import_data.metaData, searchParams: this.cleanSearchParams(), dataSourceId: dataSourceId, + id: uuidGenerator.uuidv4(), + cumulative: this.import_data.metaData.cumulated, + cumulatedStart: this.import_data.metaData.cumulatedStart, legendPosition: "top", verticalAxisPosition: "left", + actionXmlId: this.import_data.actionXmlId, }; spreadsheet_model.dispatch("CREATE_CHART", { sheetId, id: dataSourceId, position: { x: 0, - y: y, + y: 0, }, definition, }); @@ -159,115 +172,107 @@ export class ActionSpreadsheetOca extends Component { } row += 1; } - return {sheetId, row}; + return sheetId; } async importDataList(spreadsheet_model) { - var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); - const dataSourceId = uuidGenerator.uuidv4(); - var list_info = { + var sheetId = this.importCreateOrReuseSheet(spreadsheet_model); + if (!sheetId) { + const sheetIds = spreadsheet_model.getters.getSheetIds(); + sheetId = sheetIds.length ? sheetIds[0] : uuidGenerator.uuidv4(); + } + const listId = spreadsheet_model.getters.getNextListId(); + const list_info = { metaData: { resModel: this.import_data.metaData.model, columns: this.import_data.metaData.columns.map((column) => column.name), fields: this.import_data.metaData.fields, }, searchParams: { - domain: this.import_data.metaData.domain, + domain: new Domain(this.import_data.metaData.domain).toJson(), context: this.import_data.metaData.context, orderBy: this.import_data.metaData.orderBy, }, name: this.import_data.name, + actionXmlId: this.import_data.actionXmlId, }; - const dataSource = spreadsheet_model.config.custom.dataSources.add( - dataSourceId, - ListDataSource, - list_info - ); - await dataSource.load(); - spreadsheet_model.dispatch("INSERT_ODOO_LIST", { + const columns = this.import_data.metaData.columns.map((c) => ({ + name: c.name, + type: this.import_data.metaData.fields[c.name].type, + })); + spreadsheet_model.dispatch("INSERT_ODOO_LIST_WITH_TABLE", { sheetId, col: 0, - row: row, - id: spreadsheet_model.getters.getNextListId(), - dataSourceId, + row: 0, + id: listId, definition: list_info, linesNumber: this.import_data.dyn_number_of_rows, - columns: this.import_data.metaData.columns, + columns: columns, }); - const columns = []; - for (let col = 0; col < this.import_data.metaData.columns.length; col++) { - columns.push(col); - } + const dataSource = spreadsheet_model.getters.getListDataSource(listId); + await dataSource.load(); spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { sheetId, - cols: columns, + cols: Array.from({length: columns.length}, (_, i) => i), }); } async importDataPivot(spreadsheet_model) { - var {sheetId, row} = this.importCreateOrReuseSheet(spreadsheet_model); - const dataSourceId = uuidGenerator.uuidv4(); - const colGroupBys = this.import_data.metaData.colGroupBys.concat( - this.import_data.metaData.expandedColGroupBys + var sheetId = this.importCreateOrReuseSheet(spreadsheet_model); + const pivotId = uuidGenerator.uuidv4(); + const fields = this.import_data.metaData.fields || {}; + const activeMeasures = this.import_data.metaData.activeMeasures; + const measures = activeMeasures.map((measure) => ({ + id: fields[measure]?.aggregator + ? `${measure}:${fields[measure].aggregator}` + : measure, + fieldName: measure, + aggregator: fields[measure]?.aggregator, + })); + const sortedMeasure = this.import_data.metaData.sortedColumn?.measure; + const sortedColumn = activeMeasures.includes(sortedMeasure) + ? this.import_data.metaData.sortedColumn + : null; + const colGroupBys = (this.import_data.metaData.colGroupBys || []).concat( + this.import_data.metaData.expandedColGroupBys || [] ); - const rowGroupBys = this.import_data.metaData.rowGroupBys.concat( - this.import_data.metaData.expandedRowGroupBys + const rowGroupBys = (this.import_data.metaData.rowGroupBys || []).concat( + this.import_data.metaData.expandedRowGroupBys || [] ); - const pivot_info = { - metaData: { - colGroupBys, - rowGroupBys, - activeMeasures: this.import_data.metaData.activeMeasures, - resModel: this.import_data.metaData.resModel, - sortedColumn: this.import_data.metaData.sortedColumn, - }, - searchParams: this.cleanSearchParams(), - name: this.import_data.name, - }; - const dataSource = spreadsheet_model.config.custom.dataSources.add( - dataSourceId, - PivotDataSource, - pivot_info - ); - await dataSource.load(); - var {cols, rows, measures} = dataSource.getTableStructure().export(); - if (this.import_data.dyn_number_of_rows) { - const indentations = rows.map((r) => r.indent); - const max_indentation = Math.max(...indentations); - rows = makeDynamicRows( - rowGroupBys, - this.import_data.dyn_number_of_rows, - 1, - max_indentation - ); - } - if (this.import_data.dyn_number_of_cols) { - cols = makeDynamicCols( - colGroupBys, - this.import_data.dyn_number_of_cols, - this.import_data.metaData.activeMeasures - ); - } - const table = { - cols, - rows, + const pivot_info = deepCopy({ + type: "ODOO", + domain: new Domain(this.import_data.searchParams.domain).toJson(), + context: this.import_data.searchParams.context, + sortedColumn, measures, - }; - spreadsheet_model.dispatch("INSERT_PIVOT", { + model: this.import_data.metaData.resModel, + columns: normalizeGroupBys(colGroupBys.map(parseDimension), fields), + rows: normalizeGroupBys(rowGroupBys.map(parseDimension), fields), + name: this.import_data.name, + actionXmlId: this.import_data.actionXmlId, + }); + spreadsheet_model.dispatch("ADD_PIVOT", { + pivotId, + pivot: pivot_info, + }); + const ds = spreadsheet_model.getters.getPivot(pivotId); + await ds.load(); + const table = ds.getTableStructure(); + spreadsheet_model.dispatch("INSERT_PIVOT_WITH_TABLE", { sheetId, col: 0, - row: row, - id: spreadsheet_model.getters.getNextPivotId(), - table, - dataSourceId, - definition: pivot_info, + row: 0, + pivotId, + table: table.export(), + pivotMode: "dynamic", }); const columns = []; - for (let col = 0; col < table.cols[table.cols.length - 1].length; col++) { + for ( + let col = 0; + col <= table.columns[table.columns.length - 1].length; + col++ + ) { columns.push(col); } - spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", { - sheetId, - cols: columns, - }); + spreadsheet_model.dispatch("AUTORESIZE_COLUMNS", {sheetId, cols: columns}); } async importData(spreadsheet_model) { if (this.import_data.mode === "pivot") { @@ -286,6 +291,7 @@ ActionSpreadsheetOca.components = { SpreadsheetRenderer, SpreadsheetControlPanel, }; +ActionSpreadsheetOca.props = {...standardActionServiceProps}; actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, { force: true, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js index 9a3cecd1..4b5d8647 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_controlpanel.esm.js @@ -1,7 +1,6 @@ -/** @odoo-module **/ - import {Component} from "@odoo/owl"; import {ControlPanel} from "@web/search/control_panel/control_panel"; +import {useService} from "@web/core/utils/hooks"; const {useState} = owl; @@ -12,15 +11,35 @@ export class SpreadsheetName extends Component { }); } _onNameChanged(ev) { + if (this.props.isReadonly) { + return; + } if (ev.target.value) { this.env.saveRecord({name: ev.target.value}); } this.state.name = ev.target.value; + if (this.props.onChanged) { + this.props.onChanged(ev); + } } } SpreadsheetName.template = "spreadsheet_oca.SpreadsheetName"; +SpreadsheetName.props = { + name: String, + isReadonly: Boolean, + onChanged: {type: Function, optional: true}, +}; -export class SpreadsheetControlPanel extends ControlPanel {} +export class SpreadsheetControlPanel extends ControlPanel { + setup() { + super.setup(); + this.actionService = useService("action"); + } + + onBreadcrumbClicked(jsId) { + this.actionService.restore(jsId); + } +} SpreadsheetControlPanel.template = "spreadsheet_oca.SpreadsheetControlPanel"; SpreadsheetControlPanel.props = { ...ControlPanel.props, diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js index 1627274e..24cc65ed 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js @@ -1,21 +1,20 @@ -/** @odoo-module **/ - import * as spreadsheet from "@odoo/o-spreadsheet"; + import {Component} from "@odoo/owl"; -import {ConfirmationDialog} from "@web/core/confirmation_dialog/confirmation_dialog"; -import {DataSources} from "@spreadsheet/data_sources/data_sources"; -import {Dialog} from "@web/core/dialog/dialog"; -import {Field} from "@web/views/fields/field"; +import {ImageFileStore} from "./image_file_store.esm"; +import {OdooDataProvider} from "@spreadsheet/data_sources/odoo_data_provider"; +import {SpreadsheetComponent} from "@spreadsheet/actions/spreadsheet_component"; import {_t} from "@web/core/l10n/translation"; import {loadSpreadsheetDependencies} from "@spreadsheet/assets_backend/helpers"; -import {migrate} from "@spreadsheet/o_spreadsheet/migration"; import {useService} from "@web/core/utils/hooks"; -import {useSetupAction} from "@web/webclient/actions/action_hook"; +import {useSetupAction} from "@web/search/action_hook"; +import {user} from "@web/core/user"; import {waitForDataLoaded} from "@spreadsheet/helpers/model"; -import {createDefaultCurrencyFormat} from "@spreadsheet/currency/helpers"; -const {Spreadsheet, Model} = spreadsheet; +const {Model, load} = spreadsheet; + const {useSubEnv, onWillStart} = owl; +const {useStoreProvider, ModelStore} = spreadsheet.stores; const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); class SpreadsheetTransportService { @@ -26,11 +25,14 @@ class SpreadsheetTransportService { this.res_id = res_id; this.channel = "spreadsheet_oca;" + this.model + ";" + this.res_id; this.bus_service.addChannel(this.channel); - this.bus_service.addEventListener( - "notification", - this.onNotification.bind(this) - ); + this.dialog = useService("dialog"); + this.bus_service.subscribe("notification", (payload) => { + if (payload.id === this.res_id) { + this._handleNotification(payload); + } + }); this.listeners = []; + this._listener = null; } onNotification({detail: notifications}) { for (const {payload, type} of notifications) { @@ -46,18 +48,46 @@ class SpreadsheetTransportService { } } } - sendMessage(message) { - this.orm.call(this.model, "send_spreadsheet_message", [[this.res_id], message]); + async sendMessage(message) { + const isAccepted = await this.orm.call(this.model, "send_spreadsheet_message", [ + [this.res_id], + message, + this.accessToken, + ]); + if (isAccepted) { + this._handleNotification(message); + } } onNewMessage(id, callback) { - this.listeners.push({id, callback}); + this._listener = callback; + for (const message of this.listeners) { + callback(message); + } + this.listeners = []; } leave(id) { this.listeners = this.listeners.filter((listener) => listener.id !== id); } + _handleNotification(payload) { + if (!this._listener) { + this.listeners.push(payload); + } else { + this._listener(payload); + } + } } export class SpreadsheetRenderer extends Component { + createDefaultCurrency(currency) { + if (!currency) { + return undefined; + } + return { + symbol: currency.symbol, + position: currency.position, + decimalPlaces: currency.decimal_places, + }; + } getLocales() { const orm = useService("orm"); return async () => { @@ -89,27 +119,33 @@ export class SpreadsheetRenderer extends Component { } setup() { this.orm = useService("orm"); + this.http = useService("http"); this.bus_service = this.env.services.bus_service; - this.user = useService("user"); this.ui = useService("ui"); this.action = useService("action"); this.dialog = useService("dialog"); - const dataSources = new DataSources(this.env); - this.confirmDialog = this.closeDialog; + this.notifications = useService("notification"); + const odooDataProvider = new OdooDataProvider(this.env); this.loadCurrencies = this.getCurrencies(); this.loadLocales = this.getLocales(); const defaultCurrency = this.props.record.default_currency; - const defaultCurrencyFormat = defaultCurrency - ? createDefaultCurrencyFormat(defaultCurrency) - : undefined; + this.fileStore = new ImageFileStore( + this.props.model, + this.props.res_id, + this.http, + this.orm + ); + this.stores = useStoreProvider(); + // The o-spreadsheet Model handles currency formatting internally this.spreadsheet_model = new Model( - migrate(this.props.record.spreadsheet_raw), + load(this.props.record.spreadsheet_raw), { - custom: {env: this.env, orm: this.orm, dataSources}, - defaultCurrencyFormat, + custom: {env: this.env, orm: this.orm, odooDataProvider}, + defaultCurrency: this.createDefaultCurrency(defaultCurrency), external: { loadCurrencies: this.loadCurrencies, loadLocales: this.loadLocales, + fileStore: this.fileStore, }, transportService: new SpreadsheetTransportService( this.orm, @@ -119,7 +155,8 @@ export class SpreadsheetRenderer extends Component { ), client: { id: uuidGenerator.uuidv4(), - name: this.user.name, + name: user.name, + userId: user.userId, }, mode: this.props.record.mode, }, @@ -127,18 +164,22 @@ export class SpreadsheetRenderer extends Component { ); useSubEnv({ saveSpreadsheet: this.onSpreadsheetSaved.bind(this), - askConfirmation: this.askConfirmation.bind(this), downloadAsXLXS: this.downloadAsXLXS.bind(this), }); onWillStart(async () => { await loadSpreadsheetDependencies(); - await dataSources.waitForAllLoaded(); + await waitForDataLoaded(this.spreadsheet_model); await this.env.importData(this.spreadsheet_model); + this.spreadsheet_model.joinSession(); + this.stores.inject(ModelStore, this.spreadsheet_model); }); useSetupAction({ - beforeLeave: () => this.onSpreadsheetSaved(), + beforeLeave: () => { + this.onSpreadsheetSaved(); + return Promise.resolve(); + }, }); - dataSources.addEventListener("data-source-updated", () => { + odooDataProvider.addEventListener("data-source-updated", () => { const sheetId = this.spreadsheet_model.getters.getActiveSheetId(); this.spreadsheet_model.dispatch("EVALUATE_CELLS", {sheetId}); }); @@ -147,14 +188,7 @@ export class SpreadsheetRenderer extends Component { const data = this.spreadsheet_model.exportData(); this.env.saveRecord({spreadsheet_raw: data}); this.spreadsheet_model.leaveSession(); - } - askConfirmation(content, confirm) { - this.dialog.add(ConfirmationDialog, { - title: _t("Odoo Spreadsheet"), - body: content, - confirm, - confirmLabel: _t("Confirm"), - }); + this.spreadsheet_model.off("update", this); } async downloadAsXLXS() { this.ui.block(); @@ -172,14 +206,10 @@ export class SpreadsheetRenderer extends Component { } SpreadsheetRenderer.template = "spreadsheet_oca.SpreadsheetRenderer"; -SpreadsheetRenderer.components = { - Spreadsheet, - Field, - Dialog, -}; +SpreadsheetRenderer.components = {SpreadsheetComponent}; SpreadsheetRenderer.props = { record: Object, - res_id: {type: Number, optional: true}, + res_id: Number, model: String, - importData: {type: Function, optional: true}, + importData: Function, }; diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js index fac9eeaa..04238fa6 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js @@ -1,4 +1,3 @@ -/** @odoo-module **/ import {GraphRenderer} from "@web/views/graph/graph_renderer"; import {patch} from "@web/core/utils/patch"; diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml b/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml index 37b6e49a..f54f8868 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.xml @@ -1,6 +1,10 @@ - + diff --git a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js index 09fe11d1..beccbe38 100644 --- a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js @@ -1,13 +1,14 @@ -/** @odoo-module **/ import {useBus, useService} from "@web/core/utils/hooks"; + +import {HandleField} from "@web/views/fields/handle/handle_field"; import {ListRenderer} from "@web/views/list/list_renderer"; import {omit} from "@web/core/utils/objects"; import {patch} from "@web/core/utils/patch"; +import {user} from "@web/core/user"; patch(ListRenderer.prototype, { setup() { super.setup(...arguments); - this.userService = useService("user"); this.actionService = useService("action"); useBus( this.env.bus, @@ -34,8 +35,8 @@ patch(ListRenderer.prototype, { domain: model.domain, orderBy: model.orderBy, context: omit( - model.context, - ...Object.keys(this.userService.context) + model.searchParams?.context || {}, + ...Object.keys(user.context) ), columns: this.getSpreadsheetColumns(), fields: model.fields, @@ -48,10 +49,14 @@ patch(ListRenderer.prototype, { }, getSpreadsheetColumns() { const fields = this.env.model.root.fields; - return this.state.columns + return this.columns .filter( - (col) => col.type === "field" && fields[col.name].type !== "binary" - // We want to avoid binary fields + (col) => + col.type === "field" && + col.field.component !== HandleField && + !col.relatedPropertyField && + !["binary", "json"].includes(fields[col.name].type) + // We want to avoid binary or json fields ) .map((col) => ({name: col.name, type: fields[col.name].type})); }, diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js index 3423a670..7b787a73 100644 --- a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js @@ -1,7 +1,5 @@ -/** @odoo-module **/ - import {PivotRenderer} from "@web/views/pivot/pivot_renderer"; -import {_lt} from "@web/core/l10n/translation"; +import {_t} from "@web/core/l10n/translation"; import {patch} from "@web/core/utils/patch"; patch(PivotRenderer.prototype, { @@ -38,11 +36,11 @@ patch(PivotRenderer.prototype, { ); }, getSpreadsheetInsertionTooltip() { - var message = _lt("Add to spreadsheet"); + var message = _t("Add to spreadsheet"); if (this.containsDuplicatedGroupBys()) { - message = _lt("Duplicated groupbys in pivot are not supprted"); + message = _t("Duplicated groupbys in pivot are not supported"); } else if (this.isComparingInfo()) { - message = _lt("Comparisons in pivot are not supprted"); + message = _t("Comparisons in pivot are not supported"); } return message; }, @@ -53,8 +51,10 @@ patch(PivotRenderer.prototype, { additionalContext: { default_name: this.model.metaData.title, default_datasource_name: this.model.metaData.title, - default_can_be_dynamic: true, - default_can_have_dynamic_cols: this.containsColGroupBys(), + default_can_be_dynamic: false, + default_can_have_dynamic_cols: false, + // Default_can_be_dynamic: true, + // default_can_have_dynamic_cols: this.containsColGroupBys(), default_import_data: { mode: "pivot", metaData: JSON.parse(JSON.stringify(this.model.metaData)), diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml index 8aa73c8a..2eebc450 100644 --- a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml @@ -1,6 +1,10 @@ - + diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml index 2eebc450..58969472 100644 --- a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml @@ -12,7 +12,7 @@ t-on-click="onSpreadsheetButtonClicked" aria-label="Add to spreadsheet" t-att-disabled="disableSpreadsheetInsertion()" - data-hotkey="s" + data-hotkey="t" /> From 7f741181af3a37de83d0d73720dd40e55647819a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 16 Oct 2025 06:40:35 +0000 Subject: [PATCH 181/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index b740867d..0f8054c7 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -7,7 +7,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:1f7a07ac894203278f9986a0d917c3a6ddc3652a7e76873c25cce76ac31f4ff5 + !! source digest: sha256:626dcf82bf0ff302572c1c912e4bc95b14e7622c174a5449734cfd8e6ddc4efc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index a54671df..98e4ba24 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.0.2", + "version": "18.0.1.0.3", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 2eab96b4..ab818bd2 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -367,7 +367,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:1f7a07ac894203278f9986a0d917c3a6ddc3652a7e76873c25cce76ac31f4ff5 +!! source digest: sha256:626dcf82bf0ff302572c1c912e4bc95b14e7622c174a5449734cfd8e6ddc4efc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From 94d977e03e5eec6acb4c9264b53556d154098c92 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sat, 18 Oct 2025 11:15:38 +0000 Subject: [PATCH 182/235] [UPD] Update spreadsheet_dashboard_oca.pot --- spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot b/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot index a80204cb..43e42124 100644 --- a/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot +++ b/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot @@ -94,8 +94,3 @@ msgstr "" #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard msgid "To dashboard" msgstr "" - -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "" From aa4bf2bc7f97c8bc0193463aebfa454e6ce3e780 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sat, 18 Oct 2025 11:15:40 +0000 Subject: [PATCH 183/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 38 ------------------------ 1 file changed, 38 deletions(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index a644d9ee..820939ff 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -25,11 +25,6 @@ msgstr "" msgid "Add relation" msgstr "" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -93,12 +88,6 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -234,16 +223,6 @@ msgstr "" msgid "Duplicated groupbys in pivot are not supported" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -459,22 +438,12 @@ msgstr "" msgid "Next Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" @@ -664,13 +633,6 @@ msgstr "" msgid "Stacked Line" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic msgid "" From c312800a8e762b86ff69a2405a0606d1070e3d83 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 18 Oct 2025 11:17:57 +0000 Subject: [PATCH 184/235] [BOT] post-merge updates --- spreadsheet_dashboard_oca/README.rst | 2 +- spreadsheet_dashboard_oca/__manifest__.py | 2 +- .../static/description/index.html | 2 +- spreadsheet_oca/README.rst | 8 +++-- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 32 +++++++++++-------- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/spreadsheet_dashboard_oca/README.rst b/spreadsheet_dashboard_oca/README.rst index d3fe38f9..5b74e622 100644 --- a/spreadsheet_dashboard_oca/README.rst +++ b/spreadsheet_dashboard_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Dashboard Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:a0e3baae56b639a52b98d6b61ca3d446450b60e02be2992033886f8876055ee5 + !! source digest: sha256:3cc11a34f632c64341e2dee08d3fc582e30f6a13f049b460e154768d0368a7e6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_dashboard_oca/__manifest__.py b/spreadsheet_dashboard_oca/__manifest__.py index ca661ad4..8d08ea2a 100644 --- a/spreadsheet_dashboard_oca/__manifest__.py +++ b/spreadsheet_dashboard_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Dashboard Oca", "summary": """ Use OCA Spreadsheets on dashboards configuration""", - "version": "18.0.1.0.0", + "version": "18.0.1.0.1", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_dashboard_oca/static/description/index.html b/spreadsheet_dashboard_oca/static/description/index.html index fb2b01c3..8d8fbe91 100644 --- a/spreadsheet_dashboard_oca/static/description/index.html +++ b/spreadsheet_dashboard_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Dashboard Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:a0e3baae56b639a52b98d6b61ca3d446450b60e02be2992033886f8876055ee5 +!! source digest: sha256:3cc11a34f632c64341e2dee08d3fc582e30f6a13f049b460e154768d0368a7e6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module allows to edit spreadsheet dashboards using OCA Spreadsheet diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 0f8054c7..b1adfc68 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + =============== Spreadsheet Oca =============== @@ -7,13 +11,13 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:626dcf82bf0ff302572c1c912e4bc95b14e7622c174a5449734cfd8e6ddc4efc + !! source digest: sha256:f8b48998ef7617cf97ee2e3c0daadd27813e81ead8d6075887c2908fab079672 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 98e4ba24..85ee77e1 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.0.3", + "version": "18.0.1.0.4", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index ab818bd2..1245a2f4 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -3,7 +3,7 @@ -Spreadsheet Oca +README.rst -

-

Spreadsheet Oca

+
+ + +Odoo Community Association + +
+

Spreadsheet Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets using Odoo CE.

It is an alternative to the proprietary module spreadsheet_edition @@ -392,9 +397,9 @@

Spreadsheet Oca

-

Usage

+

Usage

-

Create a new spreadsheet

+

Create a new spreadsheet

-

Development

+

Development

If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -456,15 +461,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -491,5 +496,6 @@

Maintainers

+
From 26945982563b72cd22ecc51a55aa9628c8fc84d9 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 18 Oct 2025 11:18:09 +0000 Subject: [PATCH 185/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 219 +++++++++++++++----------------- spreadsheet_oca/i18n/fr.po | 213 ++++++++++++++------------------ spreadsheet_oca/i18n/fr_FR.po | 173 +++++++++----------------- spreadsheet_oca/i18n/it.po | 226 ++++++++++++++++------------------ spreadsheet_oca/i18n/nl.po | 182 ++++++++++----------------- spreadsheet_oca/i18n/pt.po | 196 ++++++++++++----------------- spreadsheet_oca/i18n/zh_CN.po | 173 +++++++++----------------- 7 files changed, 560 insertions(+), 822 deletions(-) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index 4b51e125..482e3c1e 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -20,33 +20,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "Añadir fecha" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "Añadir relación" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "Añadir hoja a la hoja de cálculo" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "Añadir texto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -57,42 +48,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "Añadir a hoja de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "Después del siguiente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "Filtrar automáticamente en el período actual" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "Antes del anterior" @@ -101,24 +92,16 @@ msgstr "Antes del anterior" msgid "Can Be Dynamic" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "Cancelar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "Cambiar nombre" @@ -133,6 +116,12 @@ msgstr "Cliente" msgid "Code" msgstr "Código" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -146,16 +135,8 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "Las comparaciones en la vista pivot no están soportadas" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" -msgstr "Confirmar" +msgid "Comparisons in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -193,7 +174,6 @@ msgstr "Creado el" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -205,21 +185,18 @@ msgstr "Nombre de datos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "Valor por defecto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "Dimensiones" @@ -235,33 +212,20 @@ msgstr "Nombre a mostrar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "Dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "Descargar XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "Las agrupaciones duplicadas en la vista pivot no están soportadas" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "Columnas Dinámicas" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" -msgstr "Columnas Dinámicas" +msgid "Duplicated groupbys in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows @@ -278,14 +242,12 @@ msgstr "Editar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "Editar dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "Archivo" @@ -297,14 +259,12 @@ msgstr "Nombre de archivo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "Filtros" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -352,14 +312,18 @@ msgstr "Importar datos a hoja de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "Insertar pivot dinámica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "Insertar pivot" @@ -371,7 +335,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "Etiqueta" @@ -396,21 +359,24 @@ msgstr "Última actualización el" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "Última Actualización el" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "Enlazar al menú de Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "Lista de nombres" @@ -422,7 +388,6 @@ msgstr "Administrador" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "Medidas" @@ -430,7 +395,6 @@ msgstr "Medidas" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -443,21 +407,18 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "Modelo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "Mes" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -473,7 +434,6 @@ msgstr "Nombre" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "Siguiente" @@ -482,57 +442,43 @@ msgstr "Siguiente" msgid "Next Revision" msgstr "Siguiente revisión" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "Número de columnas" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "Número de filas" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "Número de columnas" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "Vale" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Propietario" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "Nombre de pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "Anterior" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "Trimestre" @@ -554,28 +500,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "Actualizar todos los datos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "Modelo relacionado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "Periodo relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "Eliminar" @@ -584,11 +526,16 @@ msgstr "Eliminar" msgid "Res" msgstr "Res" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "Guardar" @@ -597,13 +544,6 @@ msgstr "Guardar" msgid "Select number of rows to duplicate row" msgstr "Seleccione el número de filas a duplicar" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "Seleccione la cantidad de filas" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -617,21 +557,18 @@ msgstr "Revisión del servidor" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "Ordenando" @@ -679,18 +616,26 @@ msgstr "Hojas de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "Apilados" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" -"Este campo permite generar tablas en las que se actualizan sus columnas con " -"los filtros establecidos en las hojas de cálculo." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -704,17 +649,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "Intervalo de tiempo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -723,21 +672,18 @@ msgstr "Tipo" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "Sin nombre" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -754,35 +700,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "Año" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "ascendiendo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "descendiendo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "el nombre es requerido" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "no actualizado" @@ -791,6 +732,44 @@ msgstr "no actualizado" msgid "websocket message handling" msgstr "gestión de mensajes websocket" +#~ msgid "Add sheet to spreadsheet" +#~ msgstr "Añadir hoja a la hoja de cálculo" + +#, python-format +#~ msgid "Comparisons in pivot are not supprted" +#~ msgstr "Las comparaciones en la vista pivot no están soportadas" + +#, python-format +#~ msgid "Confirm" +#~ msgstr "Confirmar" + +#, python-format +#~ msgid "Duplicated groupbys in pivot are not supprted" +#~ msgstr "Las agrupaciones duplicadas en la vista pivot no están soportadas" + +#~ msgid "Dynamic Cols" +#~ msgstr "Columnas Dinámicas" + +#~ msgid "Dynamic Columns" +#~ msgstr "Columnas Dinámicas" + +#~ msgid "Number Of Cols" +#~ msgstr "Número de columnas" + +#~ msgid "Number of Columns" +#~ msgstr "Número de columnas" + +#, python-format +#~ msgid "Select the quantity of rows" +#~ msgstr "Seleccione la cantidad de filas" + +#~ msgid "" +#~ "This field allows you to generate tables that its cols are updated with " +#~ "the filters set in the spreadsheets." +#~ msgstr "" +#~ "Este campo permite generar tablas en las que se actualizan sus columnas " +#~ "con los filtros establecidos en las hojas de cálculo." + #~ msgid "Data" #~ msgstr "Datos" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index 7db8304e..05407cee 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -19,33 +19,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "Ajouter une feuille au tableur" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -56,42 +47,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "Ajouter au tableur" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "" @@ -100,24 +91,16 @@ msgstr "" msgid "Can Be Dynamic" msgstr "Peut être dynamique" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "Annuler" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "Modifier le nom" @@ -132,6 +115,12 @@ msgstr "" msgid "Code" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -145,16 +134,8 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "Les comparaisons dans les pivots ne sont pas supportées" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" -msgstr "Valider" +msgid "Comparisons in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -192,7 +173,6 @@ msgstr "Créé le" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -204,21 +184,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "Dimensions" @@ -234,34 +211,21 @@ msgstr "Nom" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "Domaine" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "Télécharger XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" +msgid "Duplicated groupbys in pivot are not supported" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "Colonnes dynamiques" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" -msgstr "Colonnes dynamiques" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -277,14 +241,12 @@ msgstr "Edition" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "Modifier le domaine" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "Fichier" @@ -296,14 +258,12 @@ msgstr "Nom de fichier" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "Filtre" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -351,14 +311,18 @@ msgstr "Importer des données au tableur" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "Insérer un pivot dynamique" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "Insérer un pivot" @@ -370,7 +334,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "Étiquette" @@ -395,21 +358,24 @@ msgstr "Dernière mise à jour le" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "Dernière mise à jour à" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "" @@ -421,7 +387,6 @@ msgstr "Gestionnaire" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "" @@ -429,7 +394,6 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -442,21 +406,18 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "Modèle" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "Mois" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -472,7 +433,6 @@ msgstr "Nom" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "Suivant" @@ -481,57 +441,43 @@ msgstr "Suivant" msgid "Next Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "Nombre de colonnes" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "Nombre de lignes" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "Nombre de colonnes" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "OK" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Propriétaire" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "Nom du pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "Précédent" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "" @@ -553,28 +499,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "Mettre à jour les données" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "Supprimer" @@ -583,11 +525,16 @@ msgstr "Supprimer" msgid "Res" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "Enregistrer" @@ -596,13 +543,6 @@ msgstr "Enregistrer" msgid "Select number of rows to duplicate row" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "Sélectionnez la quantité de lignes" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -616,21 +556,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "Tri" @@ -678,18 +615,26 @@ msgstr "Feuilles de calcul" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" -"Ce champ vous permet de générer des tableaux dont les colonnes sont mises à " -"jour avec les filtres définis dans les feuilles de calcul." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -703,17 +648,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -722,21 +671,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -753,35 +699,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "Année" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "Croissant" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "Décroissant" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "Le nom est requis" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "" @@ -790,6 +731,40 @@ msgstr "" msgid "websocket message handling" msgstr "" +#~ msgid "Add sheet to spreadsheet" +#~ msgstr "Ajouter une feuille au tableur" + +#, python-format +#~ msgid "Comparisons in pivot are not supprted" +#~ msgstr "Les comparaisons dans les pivots ne sont pas supportées" + +#, python-format +#~ msgid "Confirm" +#~ msgstr "Valider" + +#~ msgid "Dynamic Cols" +#~ msgstr "Colonnes dynamiques" + +#~ msgid "Dynamic Columns" +#~ msgstr "Colonnes dynamiques" + +#~ msgid "Number Of Cols" +#~ msgstr "Nombre de colonnes" + +#~ msgid "Number of Columns" +#~ msgstr "Nombre de colonnes" + +#, python-format +#~ msgid "Select the quantity of rows" +#~ msgstr "Sélectionnez la quantité de lignes" + +#~ msgid "" +#~ "This field allows you to generate tables that its cols are updated with " +#~ "the filters set in the spreadsheets." +#~ msgstr "" +#~ "Ce champ vous permet de générer des tableaux dont les colonnes sont mises " +#~ "à jour avec les filtres définis dans les feuilles de calcul." + #~ msgid "Data" #~ msgstr "Données" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 1b009ed1..89b0f28f 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -17,33 +17,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -54,42 +45,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "" @@ -98,24 +89,16 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "" @@ -130,6 +113,12 @@ msgstr "" msgid "Code" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -143,15 +132,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" +msgid "Comparisons in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -190,7 +171,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -202,21 +182,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "" @@ -232,32 +209,19 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" +msgid "Duplicated groupbys in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -275,14 +239,12 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "" @@ -294,14 +256,12 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -349,14 +309,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "" @@ -368,7 +332,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "" @@ -393,21 +356,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "" @@ -419,7 +385,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "" @@ -427,7 +392,6 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -440,21 +404,18 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -470,7 +431,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "" @@ -479,57 +439,43 @@ msgstr "" msgid "Next Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "" @@ -551,28 +497,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "" @@ -581,11 +523,16 @@ msgstr "" msgid "Res" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "" @@ -594,13 +541,6 @@ msgstr "" msgid "Select number of rows to duplicate row" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -614,21 +554,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "" @@ -676,15 +613,25 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" #. module: spreadsheet_oca @@ -697,17 +644,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -716,21 +667,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -747,35 +695,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "" diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 7916fe03..fb0e3e42 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -19,33 +19,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "Aggiungi data" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "Aggiungi relazione" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "Aggiungi scheda a foglIo di calcolo" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "Aggiungi testo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "Aggiungi al foglio di calcolo" @@ -56,42 +47,42 @@ msgstr "Aggiungi al foglio di calcolo" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "Aggiungi al foglio di calcolo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "Dopo il sucessivo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "Si è sicuri di voler cancellare questo elenco?" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "Si è sicuri di voler cancellare questa pivot?" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "Filtra automaticamente sul periodo attuale" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "Prima del precedente" @@ -100,24 +91,16 @@ msgstr "Prima del precedente" msgid "Can Be Dynamic" msgstr "Può essere dinamico" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "Può avere colonne dinamiche" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "Annulla" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "Modifica nome" @@ -132,6 +115,12 @@ msgstr "Client" msgid "Code" msgstr "Codice" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -145,16 +134,8 @@ msgstr "Azienda" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "Le comparazioni nella vista pivot non sono supportate" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" -msgstr "Conferma" +msgid "Comparisons in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -192,7 +173,6 @@ msgstr "Creato il" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "Valuta" @@ -204,21 +184,18 @@ msgstr "Nome origine dati" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "Valore predefinito" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "Cancella" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "Dimensioni" @@ -234,33 +211,20 @@ msgstr "Nome visualizzato" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "Dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "Scarica XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "Nelle viste pivot Non sono supportati i raggruppamenti duplicati" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "Colonne dinamiche" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" -msgstr "Colonne dinamiche" +msgid "Duplicated groupbys in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows @@ -277,14 +241,12 @@ msgstr "Modifica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "Modifica dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "File" @@ -296,14 +258,12 @@ msgstr "Nome file" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "Filtri" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "Da / A" @@ -353,14 +313,18 @@ msgstr "Importa dati nel foglio di calcolo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "Inserisci pivot dinamico" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "Inserisci pivot" @@ -372,7 +336,6 @@ msgstr "È albero" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "Etichetta" @@ -397,21 +360,24 @@ msgstr "Ultimo aggiornamento il" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "Ultimo aggiornamento il" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "Collegamento al menu Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "Nome elenco" @@ -423,7 +389,6 @@ msgstr "Supervisore" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "Misure" @@ -431,7 +396,6 @@ msgstr "Misure" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "Menu elementi" @@ -444,21 +408,18 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "Modello" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "Mese" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "Mese / Trimestre" @@ -474,7 +435,6 @@ msgstr "Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "Successiva" @@ -483,57 +443,43 @@ msgstr "Successiva" msgid "Next Revision" msgstr "Revisione successiva" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "Numero di colonne" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "Numero di righe" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "Numero di colonne" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "OK" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" -msgstr "Foglio di calcolo Odoo" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Proprietario" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "Nome pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "Precedente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "Trimestre" @@ -555,28 +501,24 @@ msgstr "Gruppi lettori" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "Aggiorna tutti i dati" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "Modello correlato" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "Periodo relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "Rimuovi" @@ -585,11 +527,16 @@ msgstr "Rimuovi" msgid "Res" msgstr "Res" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "Salva" @@ -598,13 +545,6 @@ msgstr "Salva" msgid "Select number of rows to duplicate row" msgstr "Selezionare il numero di righe per duplicare la riga" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "Selezionare la quantità di righe" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -618,21 +558,18 @@ msgstr "Revisione server" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "Impostazioni" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "Foglio1" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "Ordinamento" @@ -680,18 +617,26 @@ msgstr "Fogli di calcolo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "In coda" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" -"Questo campo consente di generare tabelle le cui colonne sono aggiornate con " -"i filtri impostati nei fogli di lavoro." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -705,17 +650,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "Intervallo orario" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "Attiva menu a tendina" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -724,21 +673,18 @@ msgstr "Tipo" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "Senza nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "Carica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "Carica un foglio di calcolo" @@ -755,35 +701,30 @@ msgstr "Accesso in scrittura" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "Anno" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "crescente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "decrescente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "è richiesto il nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "non aggiornato" @@ -792,6 +733,51 @@ msgstr "non aggiornato" msgid "websocket message handling" msgstr "gestione messaggio websocket" +#~ msgid "Add sheet to spreadsheet" +#~ msgstr "Aggiungi scheda a foglIo di calcolo" + +#~ msgid "Can Have Dynamic Cols" +#~ msgstr "Può avere colonne dinamiche" + +#, python-format +#~ msgid "Comparisons in pivot are not supprted" +#~ msgstr "Le comparazioni nella vista pivot non sono supportate" + +#, python-format +#~ msgid "Confirm" +#~ msgstr "Conferma" + +#, python-format +#~ msgid "Duplicated groupbys in pivot are not supprted" +#~ msgstr "Nelle viste pivot Non sono supportati i raggruppamenti duplicati" + +#~ msgid "Dynamic Cols" +#~ msgstr "Colonne dinamiche" + +#~ msgid "Dynamic Columns" +#~ msgstr "Colonne dinamiche" + +#~ msgid "Number Of Cols" +#~ msgstr "Numero di colonne" + +#~ msgid "Number of Columns" +#~ msgstr "Numero di colonne" + +#, python-format +#~ msgid "Odoo Spreadsheet" +#~ msgstr "Foglio di calcolo Odoo" + +#, python-format +#~ msgid "Select the quantity of rows" +#~ msgstr "Selezionare la quantità di righe" + +#~ msgid "" +#~ "This field allows you to generate tables that its cols are updated with " +#~ "the filters set in the spreadsheets." +#~ msgstr "" +#~ "Questo campo consente di generare tabelle le cui colonne sono aggiornate " +#~ "con i filtri impostati nei fogli di lavoro." + #~ msgid "Data" #~ msgstr "Dati" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index 111f961c..a69a4847 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -19,33 +19,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "Datum toevoegen" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "Relatie toevoegen" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "Blad toevoegen aan spreadsheet" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "Tekst toevoegen" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -56,42 +47,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "Toevoegen aan spreadsheet" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "Na volgende" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "Automatisch filteren op de huidige periode" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "Vóór Vorige" @@ -100,24 +91,16 @@ msgstr "Vóór Vorige" msgid "Can Be Dynamic" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "Annuleren" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "Verander naam" @@ -132,6 +115,12 @@ msgstr "Cliënt" msgid "Code" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -145,17 +134,9 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" +msgid "Comparisons in pivot are not supported" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" -msgstr "Bevestigen" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids msgid "Contributors" @@ -192,7 +173,6 @@ msgstr "Gemaakt op" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -204,21 +184,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "Standaardwaarde" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "Dimensies" @@ -234,32 +211,19 @@ msgstr "Weergavenaam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "Domein" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" +msgid "Duplicated groupbys in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -277,14 +241,12 @@ msgstr "Bewerking" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "Bewerk domein" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "Bestand" @@ -296,14 +258,12 @@ msgstr "Bestandsnaam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -351,14 +311,18 @@ msgstr "Gegevens importeren naar spreadsheet" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "Draaipunt invoegen" @@ -370,7 +334,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "" @@ -395,21 +358,24 @@ msgstr "Laatst bijgewerkt op" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "Laatst bijgewerkt op" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "Link naar het Odoo-menu" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "Naam van lijst" @@ -421,7 +387,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "Afmetingen" @@ -429,7 +394,6 @@ msgstr "Afmetingen" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -442,21 +406,18 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "Maand" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -472,7 +433,6 @@ msgstr "Naam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "Volgende" @@ -481,57 +441,43 @@ msgstr "Volgende" msgid "Next Revision" msgstr "Volgende revisie" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Eigenaar" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "Vorig" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "Kwartaal" @@ -553,28 +499,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "Ververs alle gegevens" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "Gerelateerd model" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "Relatieve periode" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "Verwijderen" @@ -583,11 +525,16 @@ msgstr "Verwijderen" msgid "Res" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "Opslaan" @@ -596,13 +543,6 @@ msgstr "Opslaan" msgid "Select number of rows to duplicate row" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -616,21 +556,18 @@ msgstr "Serverversie" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "Sortering" @@ -678,15 +615,25 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "Gestapeld" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" #. module: spreadsheet_oca @@ -699,17 +646,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "Tijdsbestek" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -718,21 +669,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "Naamloos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -749,35 +697,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "Jaar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "oplopend" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "aflopend" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "Naam is vereist" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "niet geüpdate" @@ -786,6 +729,13 @@ msgstr "niet geüpdate" msgid "websocket message handling" msgstr "afhandeling van websocket-berichten" +#~ msgid "Add sheet to spreadsheet" +#~ msgstr "Blad toevoegen aan spreadsheet" + +#, python-format +#~ msgid "Confirm" +#~ msgstr "Bevestigen" + #~ msgid "Data" #~ msgstr "Gegevens" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 825d818b..d6d26568 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -19,33 +19,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "Adicionar data" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "Adicionar relação" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "Adicionar folha ao painel" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "Adicionar texto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -56,42 +47,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "Adicionar à folha de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "Depois de a seguir" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "Filtrar automaticamente no período atual" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "Antes de Anterior" @@ -100,24 +91,16 @@ msgstr "Antes de Anterior" msgid "Can Be Dynamic" msgstr "Pode Ser Dinâmico" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "Cancelar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "Mudar Nome" @@ -132,6 +115,12 @@ msgstr "Cliente" msgid "Code" msgstr "Código" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -145,16 +134,8 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "Comparações no pivô não são suportadas" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" -msgstr "Confirmar" +msgid "Comparisons in pivot are not supported" +msgstr "" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -192,7 +173,6 @@ msgstr "Criado em" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -204,21 +184,18 @@ msgstr "Nome da Fonte de Dados" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "Valor predefinido" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "Dimensões" @@ -234,32 +211,19 @@ msgstr "Nome Apresentado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "Domínio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "Descarregar XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "Agrupamentos duplicados no pivô não são suportados" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" +msgid "Duplicated groupbys in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -277,14 +241,12 @@ msgstr "Editar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "Editar domínio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "Arquivo" @@ -296,14 +258,12 @@ msgstr "Nome do Arquivo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "Filtros" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -351,14 +311,18 @@ msgstr "Importar dados para a folha de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "Inserir pivô dinâmico" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "Inserir pivô" @@ -370,7 +334,6 @@ msgstr "É Árvore" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "Rótulo" @@ -395,21 +358,24 @@ msgstr "Última Actualização em" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "Última Modificação a" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "Link para o menu Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "Nome da lista" @@ -421,7 +387,6 @@ msgstr "Gestor" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "Medidas" @@ -429,7 +394,6 @@ msgstr "Medidas" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -442,21 +406,18 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "Modelo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "Mês" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -472,7 +433,6 @@ msgstr "Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "Próximo" @@ -481,57 +441,43 @@ msgstr "Próximo" msgid "Next Revision" msgstr "Próxima Revisão" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "Número De Linhas" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "OK" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Dono" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "Nome do pivô" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "Anterior" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "Trimestre" @@ -553,28 +499,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "Atualizar todos os dados" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "Modelo relacionado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "Período Relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "Remover" @@ -583,11 +525,16 @@ msgstr "Remover" msgid "Res" msgstr "Res" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "Guardar" @@ -596,13 +543,6 @@ msgstr "Guardar" msgid "Select number of rows to duplicate row" msgstr "Selecionar o número de linhas para duplicar a linha" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "Selecione a quantidade de linhas" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -616,21 +556,18 @@ msgstr "Revisão Servidor" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "Ordenação" @@ -678,15 +615,25 @@ msgstr "Folhas de Cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "Empilhados" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" #. module: spreadsheet_oca @@ -699,17 +646,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "Intervalo de tempo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -718,21 +669,18 @@ msgstr "Tipo" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "Sem Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -749,35 +697,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "Ano" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "ascendente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "descendente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "nome é necessário" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "não atualizado" @@ -786,6 +729,25 @@ msgstr "não atualizado" msgid "websocket message handling" msgstr "tratamento de mensagens websocket" +#~ msgid "Add sheet to spreadsheet" +#~ msgstr "Adicionar folha ao painel" + +#, python-format +#~ msgid "Comparisons in pivot are not supprted" +#~ msgstr "Comparações no pivô não são suportadas" + +#, python-format +#~ msgid "Confirm" +#~ msgstr "Confirmar" + +#, python-format +#~ msgid "Duplicated groupbys in pivot are not supprted" +#~ msgstr "Agrupamentos duplicados no pivô não são suportados" + +#, python-format +#~ msgid "Select the quantity of rows" +#~ msgstr "Selecione a quantidade de linhas" + #~ msgid "Data" #~ msgstr "Data" diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index ae7a6c77..3da715f6 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -17,33 +17,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add relation" msgstr "" -#. module: spreadsheet_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet -msgid "Add sheet to spreadsheet" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 -#, python-format msgid "Add to spreadesheet" msgstr "" @@ -54,42 +45,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add -#, python-format msgid "Add to spreadsheet" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "After next" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Are you sure you want to delete this pivot?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Automatically filter on the current period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Before Previous" msgstr "" @@ -98,24 +89,16 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols -msgid "Can Have Dynamic Cols" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -#, python-format msgid "Cancel" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Change name" msgstr "" @@ -130,6 +113,12 @@ msgstr "" msgid "Code" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -143,15 +132,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Comparisons in pivot are not supprted" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Confirm" +msgid "Comparisons in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -190,7 +171,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format msgid "Currency" msgstr "" @@ -202,21 +182,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Delete" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Dimensions" msgstr "" @@ -232,32 +209,19 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -#, python-format -msgid "Duplicated groupbys in pivot are not supprted" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols -msgid "Dynamic Cols" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "Dynamic Columns" +msgid "Duplicated groupbys in pivot are not supported" msgstr "" #. module: spreadsheet_oca @@ -275,14 +239,12 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Edit domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "File" msgstr "" @@ -294,14 +256,12 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Filters" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "From / To" msgstr "" @@ -349,14 +309,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format +msgid "Insert list" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert pivot" msgstr "" @@ -368,7 +332,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Label" msgstr "" @@ -393,21 +356,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "List name" msgstr "" @@ -419,7 +385,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Measures" msgstr "" @@ -427,7 +392,6 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -#, python-format msgid "Menu Items" msgstr "" @@ -440,21 +404,18 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model -#, python-format msgid "Model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Month" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Month / Quarter" msgstr "" @@ -470,7 +431,6 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Next" msgstr "" @@ -479,57 +439,43 @@ msgstr "" msgid "Next Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols -msgid "Number Of Cols" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows msgid "Number Of Rows" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols -msgid "Number of Columns" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 -#, python-format -msgid "Odoo Spreadsheet" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Previous" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Quarter" msgstr "" @@ -551,28 +497,24 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "Refresh all data" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Remove" msgstr "" @@ -581,11 +523,16 @@ msgstr "" msgid "Res" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Rows:" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Save" msgstr "" @@ -594,13 +541,6 @@ msgstr "" msgid "Select number of rows to duplicate row" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format -msgid "Select the quantity of rows" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -614,21 +554,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 -#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Sorting" msgstr "" @@ -676,15 +613,25 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols -msgid "" -"This field allows you to generate tables that its cols are updated with the " -"filters set in the spreadsheets." +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" msgstr "" #. module: spreadsheet_oca @@ -697,17 +644,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Toggle Dropdown" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Total rows used when inserting list" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" @@ -716,21 +667,18 @@ msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 -#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 -#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 -#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -747,35 +695,30 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "Year" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "ascending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "descending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#, python-format msgid "name is required" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -#, python-format msgid "not updated" msgstr "" From 4ade73cca6addba10a853862b8dc5cdc7b0f5d88 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 18 Oct 2025 11:18:09 +0000 Subject: [PATCH 186/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_dashboard_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_dashboard_oca/ --- spreadsheet_dashboard_oca/i18n/es.po | 13 +++++++------ spreadsheet_dashboard_oca/i18n/fr.po | 12 +++++------- spreadsheet_dashboard_oca/i18n/fr_FR.po | 13 +++++++------ spreadsheet_dashboard_oca/i18n/it.po | 13 +++++++------ spreadsheet_dashboard_oca/i18n/nl.po | 13 +++++++------ spreadsheet_dashboard_oca/i18n/pt.po | 13 +++++++------ spreadsheet_dashboard_oca/i18n/zh_CN.po | 8 ++------ 7 files changed, 42 insertions(+), 43 deletions(-) diff --git a/spreadsheet_dashboard_oca/i18n/es.po b/spreadsheet_dashboard_oca/i18n/es.po index 4d9e0e4f..c70b14c8 100644 --- a/spreadsheet_dashboard_oca/i18n/es.po +++ b/spreadsheet_dashboard_oca/i18n/es.po @@ -65,7 +65,6 @@ msgstr "Nuevo tablero" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "Operación de búsqueda no soportada" @@ -84,10 +83,14 @@ msgstr "Hoja de cálculo Raw" msgid "Spreadsheet Revision" msgstr "Revisión de hoja de cálculo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "El valor tiene que ser un booleano" @@ -96,7 +99,5 @@ msgstr "El valor tiene que ser un booleano" msgid "To dashboard" msgstr "A tablero" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "A tablero en nueva hoja" +#~ msgid "To dashboard new sheet" +#~ msgstr "A tablero en nueva hoja" diff --git a/spreadsheet_dashboard_oca/i18n/fr.po b/spreadsheet_dashboard_oca/i18n/fr.po index 48ee63ad..7c9883fa 100644 --- a/spreadsheet_dashboard_oca/i18n/fr.po +++ b/spreadsheet_dashboard_oca/i18n/fr.po @@ -62,7 +62,6 @@ msgstr "" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "" @@ -81,10 +80,14 @@ msgstr "" msgid "Spreadsheet Revision" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "" @@ -92,8 +95,3 @@ msgstr "" #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard msgid "To dashboard" msgstr "" - -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "" diff --git a/spreadsheet_dashboard_oca/i18n/fr_FR.po b/spreadsheet_dashboard_oca/i18n/fr_FR.po index 8416c75b..9067d571 100644 --- a/spreadsheet_dashboard_oca/i18n/fr_FR.po +++ b/spreadsheet_dashboard_oca/i18n/fr_FR.po @@ -64,7 +64,6 @@ msgstr "" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "" @@ -83,10 +82,14 @@ msgstr "Feuille de calcul brute" msgid "Spreadsheet Revision" msgstr "Révision de la feuille de calcul" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "" @@ -95,7 +98,5 @@ msgstr "" msgid "To dashboard" msgstr "Au tableau de bord" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "Nouvelle feuille du tableau de bord" +#~ msgid "To dashboard new sheet" +#~ msgstr "Nouvelle feuille du tableau de bord" diff --git a/spreadsheet_dashboard_oca/i18n/it.po b/spreadsheet_dashboard_oca/i18n/it.po index d47ba93b..c0998397 100644 --- a/spreadsheet_dashboard_oca/i18n/it.po +++ b/spreadsheet_dashboard_oca/i18n/it.po @@ -64,7 +64,6 @@ msgstr "Nuovo cruscotto" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "Cerca operazioni non supportate" @@ -83,10 +82,14 @@ msgstr "Foglio di calcolo grezzo" msgid "Spreadsheet Revision" msgstr "Revisione foglio di calcolo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "Il valore deve essere booleano" @@ -95,7 +98,5 @@ msgstr "Il valore deve essere booleano" msgid "To dashboard" msgstr "Alla bacheca" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "Al nuovo foglio bacheca" +#~ msgid "To dashboard new sheet" +#~ msgstr "Al nuovo foglio bacheca" diff --git a/spreadsheet_dashboard_oca/i18n/nl.po b/spreadsheet_dashboard_oca/i18n/nl.po index 873b23cf..2deeecf2 100644 --- a/spreadsheet_dashboard_oca/i18n/nl.po +++ b/spreadsheet_dashboard_oca/i18n/nl.po @@ -64,7 +64,6 @@ msgstr "" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "" @@ -83,10 +82,14 @@ msgstr "Spreadsheet onbewerkt" msgid "Spreadsheet Revision" msgstr "Revisie van spreadsheets" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "" @@ -95,7 +98,5 @@ msgstr "" msgid "To dashboard" msgstr "Naar dashboard" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "Naar dashboard van een nieuw blad" +#~ msgid "To dashboard new sheet" +#~ msgstr "Naar dashboard van een nieuw blad" diff --git a/spreadsheet_dashboard_oca/i18n/pt.po b/spreadsheet_dashboard_oca/i18n/pt.po index 35f48c97..06df84d0 100644 --- a/spreadsheet_dashboard_oca/i18n/pt.po +++ b/spreadsheet_dashboard_oca/i18n/pt.po @@ -64,7 +64,6 @@ msgstr "Novo painel" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "Operação de pesquisa não suportada" @@ -83,10 +82,14 @@ msgstr "Folha de Cálculo em Bruto" msgid "Spreadsheet Revision" msgstr "Revisão da Folha de Cálculo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data +msgid "Spreadsheet file" +msgstr "" + #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "O valor deve ser um booleano" @@ -95,7 +98,5 @@ msgstr "O valor deve ser um booleano" msgid "To dashboard" msgstr "Para painel" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "Nova folha para painel" +#~ msgid "To dashboard new sheet" +#~ msgstr "Nova folha para painel" diff --git a/spreadsheet_dashboard_oca/i18n/zh_CN.po b/spreadsheet_dashboard_oca/i18n/zh_CN.po index 792a5a5e..1542cb98 100644 --- a/spreadsheet_dashboard_oca/i18n/zh_CN.po +++ b/spreadsheet_dashboard_oca/i18n/zh_CN.po @@ -64,7 +64,6 @@ msgstr "新建仪表盘" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "Search operation not supported" msgstr "不支持搜索操作" @@ -91,7 +90,6 @@ msgstr "电子表格文件" #. module: spreadsheet_dashboard_oca #. odoo-python #: code:addons/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py:0 -#, python-format msgid "The value has to be a boolean" msgstr "值必须为布尔型" @@ -100,7 +98,5 @@ msgstr "值必须为布尔型" msgid "To dashboard" msgstr "到仪表盘" -#. module: spreadsheet_dashboard_oca -#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard_sheet -msgid "To dashboard new sheet" -msgstr "到仪表盘新工作表" +#~ msgid "To dashboard new sheet" +#~ msgstr "到仪表盘新工作表" From 613366d32fbee4524e60473d2977872106d8f478 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 20 Oct 2025 06:28:40 +0000 Subject: [PATCH 187/235] Translated using Weblate (Italian) Currently translated at 100.0% (16 of 16 strings) Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_dashboard_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_dashboard_oca/it/ --- spreadsheet_dashboard_oca/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_dashboard_oca/i18n/it.po b/spreadsheet_dashboard_oca/i18n/it.po index c0998397..c7308e20 100644 --- a/spreadsheet_dashboard_oca/i18n/it.po +++ b/spreadsheet_dashboard_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-07-29 15:58+0000\n" +"PO-Revision-Date: 2025-10-20 08:42+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.10.4\n" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__active @@ -85,7 +85,7 @@ msgstr "Revisione foglio di calcolo" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__spreadsheet_binary_data msgid "Spreadsheet file" -msgstr "" +msgstr "File foglio di calcolo" #. module: spreadsheet_dashboard_oca #. odoo-python From 5ff84dd509f17eba3cf0c17b321ce44fdd011f52 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 20 Oct 2025 06:30:16 +0000 Subject: [PATCH 188/235] Translated using Weblate (Italian) Currently translated at 100.0% (119 of 119 strings) Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/it/ --- spreadsheet_oca/i18n/it.po | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index fb0e3e42..885ac676 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-06-24 09:25+0000\n" +"PO-Revision-Date: 2025-10-20 08:42+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -72,7 +72,7 @@ msgstr "Si è sicuri di voler cancellare questa pivot?" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Area" -msgstr "" +msgstr "Area" #. module: spreadsheet_oca #. odoo-javascript @@ -119,7 +119,7 @@ msgstr "Codice" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Column" -msgstr "" +msgstr "Colonna" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands @@ -135,7 +135,7 @@ msgstr "Azienda" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 msgid "Comparisons in pivot are not supported" -msgstr "" +msgstr "Il confronto nella pivot non è supportato" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -224,7 +224,7 @@ msgstr "Scarica XLSX" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 msgid "Duplicated groupbys in pivot are not supported" -msgstr "" +msgstr "Il raggruppamento nella pivot non è supportato" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows @@ -320,7 +320,7 @@ msgstr "Inserisci pivot dinamico" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" -msgstr "" +msgstr "Inserisci elenco" #. module: spreadsheet_oca #. odoo-javascript @@ -367,7 +367,7 @@ msgstr "Ultimo aggiornamento il" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Line" -msgstr "" +msgstr "Riga" #. module: spreadsheet_oca #. odoo-javascript @@ -463,7 +463,7 @@ msgstr "Proprietario" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Pie" -msgstr "" +msgstr "Torta" #. module: spreadsheet_oca #. odoo-javascript @@ -531,7 +531,7 @@ msgstr "Res" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Rows:" -msgstr "" +msgstr "Righe:" #. module: spreadsheet_oca #. odoo-javascript @@ -624,19 +624,19 @@ msgstr "In coda" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Stacked Area" -msgstr "" +msgstr "Area riempita" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Stacked Column" -msgstr "" +msgstr "Colonna riempita" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Stacked Line" -msgstr "" +msgstr "Riga riempita" #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -663,7 +663,7 @@ msgstr "Attiva menu a tendina" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Total rows used when inserting list" -msgstr "" +msgstr "Righe usati totali nell'inserimento dell'elenco" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type From 57a6ede6f53a674a6b7a728b3be2cddad210f77b Mon Sep 17 00:00:00 2001 From: Chris Mann Date: Mon, 20 Oct 2025 11:42:57 +0100 Subject: [PATCH 189/235] [IMP] spreadsheet_dashboard_oca: Add to dashboard feature from existing spreadsheet --- spreadsheet_dashboard_oca/README.rst | 16 ++--- spreadsheet_dashboard_oca/__manifest__.py | 11 ++++ .../security/ir.model.access.csv | 2 + .../static/description/index.html | 24 +++---- .../bundle/spreadsheet_to_dashboard.esm.js | 55 ++++++++++++++++ spreadsheet_dashboard_oca/wizards/__init__.py | 2 +- .../wizards/spreadsheet_to_dashboard.py | 62 +++++++++++++++++++ .../wizards/spreadsheet_to_dashboard.xml | 32 ++++++++++ 8 files changed, 178 insertions(+), 26 deletions(-) create mode 100644 spreadsheet_dashboard_oca/security/ir.model.access.csv create mode 100644 spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js create mode 100644 spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.py create mode 100644 spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.xml diff --git a/spreadsheet_dashboard_oca/README.rst b/spreadsheet_dashboard_oca/README.rst index 5b74e622..6800da8c 100644 --- a/spreadsheet_dashboard_oca/README.rst +++ b/spreadsheet_dashboard_oca/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - ========================= Spreadsheet Dashboard Oca ========================= @@ -17,7 +13,7 @@ Spreadsheet Dashboard Oca .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github @@ -61,14 +57,14 @@ Authors Contributors ------------ -- Enric Tobella -- `Tecnativa `__: +- Enric Tobella +- `Tecnativa `__: - - Carlos Roca + - Carlos Roca -- `Open User Systems `__: +- `Open User Systems `__: - - Chris Mann + - Chris Mann Maintainers ----------- diff --git a/spreadsheet_dashboard_oca/__manifest__.py b/spreadsheet_dashboard_oca/__manifest__.py index 8d08ea2a..7fc19c2e 100644 --- a/spreadsheet_dashboard_oca/__manifest__.py +++ b/spreadsheet_dashboard_oca/__manifest__.py @@ -14,9 +14,20 @@ "spreadsheet_oca", ], "data": [ + "security/ir.model.access.csv", "wizards/spreadsheet_spreadsheet_import.xml", + "wizards/spreadsheet_to_dashboard.xml", "views/spreadsheet_dashboard_group_views.xml", "views/spreadsheet_dashboard.xml", "data/spreadsheet_spreadsheet_import_mode.xml", ], + "assets": { + "spreadsheet.o_spreadsheet": [ + ( + "after", + "spreadsheet/static/src/o_spreadsheet/o_spreadsheet.js", + "spreadsheet_dashboard_oca/static/src/bundle/*.js", + ), + ], + }, } diff --git a/spreadsheet_dashboard_oca/security/ir.model.access.csv b/spreadsheet_dashboard_oca/security/ir.model.access.csv new file mode 100644 index 00000000..28c5d5f9 --- /dev/null +++ b/spreadsheet_dashboard_oca/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_spreadsheet_to_dashboard_wizard,spreadsheet.to.dashboard.wizard.access,model_spreadsheet_to_dashboard,base.group_user,1,1,1,0 diff --git a/spreadsheet_dashboard_oca/static/description/index.html b/spreadsheet_dashboard_oca/static/description/index.html index 8d8fbe91..fce2b5f1 100644 --- a/spreadsheet_dashboard_oca/static/description/index.html +++ b/spreadsheet_dashboard_oca/static/description/index.html @@ -3,7 +3,7 @@ -README.rst +Spreadsheet Dashboard Oca -
+
+

Spreadsheet Dashboard Oca

- - -Odoo Community Association - -
-

Spreadsheet Dashboard Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module allows to edit spreadsheet dashboards using OCA Spreadsheet editor.

Table of contents

@@ -390,7 +385,7 @@

Spreadsheet Dashboard Oca

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -398,15 +393,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -433,6 +428,5 @@

Maintainers

-
diff --git a/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js b/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js new file mode 100644 index 00000000..f98c64d4 --- /dev/null +++ b/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js @@ -0,0 +1,55 @@ +import * as spreadsheet from "@odoo/o-spreadsheet"; +import {useState, useSubEnv} from "@odoo/owl"; +import {SpreadsheetRenderer} from "@spreadsheet_oca/spreadsheet/bundle/spreadsheet_renderer.esm"; +import {_t} from "@web/core/l10n/translation"; +import {patch} from "@web/core/utils/patch"; +const {topbarMenuRegistry} = spreadsheet.registries; +import {user} from "@web/core/user"; + +topbarMenuRegistry.addChild("add_to_dashboard", ["file"], { + name: _t("Add to dashboard"), + sequence: 120, + execute: (env) => env.addToDashboard(), + isVisible: (env) => env.canAddToDashboard?.(), + icon: "o-spreadsheet-Icon.INSERT_CHART", +}); + +patch(SpreadsheetRenderer.prototype, { + setup() { + super.setup(); + this.state = useState({canAddToDashboard: false}); + this._checkDashboardPermission(); + useSubEnv({ + addToDashboard: this._addToDashboard.bind(this), + canAddToDashboard: () => this.state.canAddToDashboard, + }); + }, + async _checkDashboardPermission() { + const result = + (await user.hasGroup("base.group_system")) || + (await user.hasGroup("spreadsheet_dashboard.group_dashboard_manager")); + this.state.canAddToDashboard = result; + }, + async _addToDashboard() { + const record = this.props.record; + const resId = this.props.res_id; + const name = record.name; + this.onSpreadsheetSaved(); + this.env.services.action.doAction( + { + name: _t("Add to dashboard"), + type: "ir.actions.act_window", + view_mode: "form", + views: [[false, "form"]], + target: "new", + res_model: "spreadsheet.to.dashboard", + }, + { + additionalContext: { + default_spreadsheet_id: resId, + default_name: name, + }, + } + ); + }, +}); diff --git a/spreadsheet_dashboard_oca/wizards/__init__.py b/spreadsheet_dashboard_oca/wizards/__init__.py index 758b1998..d77deca7 100644 --- a/spreadsheet_dashboard_oca/wizards/__init__.py +++ b/spreadsheet_dashboard_oca/wizards/__init__.py @@ -1 +1 @@ -from . import spreadsheet_spreadsheet_import +from . import spreadsheet_spreadsheet_import, spreadsheet_to_dashboard diff --git a/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.py b/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.py new file mode 100644 index 00000000..4a0bcbab --- /dev/null +++ b/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.py @@ -0,0 +1,62 @@ +# Copyright 2025 Open User Systems +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json + +from odoo import api, fields, models + + +class SpreadsheetToDashboard(models.TransientModel): + _name = "spreadsheet.to.dashboard" + _description = "Create dashboard from spreadsheet" + + name = fields.Char( + "Dashboard Name", + required=True, + compute="_compute_name", + store=True, + readonly=False, + precompute=True, + ) + spreadsheet_id = fields.Many2one( + "spreadsheet.spreadsheet", + readonly=True, + required=True, + ) + dashboard_group_id = fields.Many2one( + "spreadsheet.dashboard.group", string="Dashboard Section", required=True + ) + group_ids = fields.Many2many( + "res.groups", + default=lambda self: self._default_group_ids(), + string="User Groups", + ) + + def _default_group_ids(self): + return self.env["spreadsheet.dashboard"].default_get(["group_ids"])["group_ids"] + + @api.depends("spreadsheet_id.name") + def _compute_name(self): + for rec in self: + rec.name = rec.spreadsheet_id.name + + def create_dashboard(self): + self.ensure_one() + spreadsheet_data = self.spreadsheet_id.get_spreadsheet_data() + spreadsheet_raw = spreadsheet_data["spreadsheet_raw"] + dashboard = self.env["spreadsheet.dashboard"].create( + { + "name": self.name, + "dashboard_group_id": self.dashboard_group_id.id, + "group_ids": self.group_ids.ids, + "spreadsheet_data": json.dumps(spreadsheet_raw), + } + ) + return { + "type": "ir.actions.client", + "tag": "action_spreadsheet_dashboard", + "name": self.name, + "params": { + "dashboard_id": dashboard.id, + }, + } diff --git a/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.xml b/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.xml new file mode 100644 index 00000000..a734389f --- /dev/null +++ b/spreadsheet_dashboard_oca/wizards/spreadsheet_to_dashboard.xml @@ -0,0 +1,32 @@ + + + + spreadsheet.to.dashboard.view.form + spreadsheet.to.dashboard + +
+ + + + + + + + + +
+
+
+
+
+
From 527b20657493666c4c63c2f9f44836ce1e78cdbf Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 27 Oct 2025 10:02:25 +0000 Subject: [PATCH 190/235] [UPD] Update spreadsheet_dashboard_oca.pot --- .../i18n/spreadsheet_dashboard_oca.pot | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot b/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot index 43e42124..4d071936 100644 --- a/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot +++ b/spreadsheet_dashboard_oca/i18n/spreadsheet_dashboard_oca.pot @@ -18,16 +18,47 @@ msgstr "" msgid "Active" msgstr "" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -38,16 +69,46 @@ msgstr "" msgid "Dashboard Group" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -64,6 +125,11 @@ msgstr "" msgid "Search operation not supported" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -94,3 +160,8 @@ msgstr "" #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard msgid "To dashboard" msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" From b2e399544862e34fca747c065f83f5d9c75627b0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 27 Oct 2025 10:04:58 +0000 Subject: [PATCH 191/235] [BOT] post-merge updates --- spreadsheet_dashboard_oca/README.rst | 18 ++++++++----- spreadsheet_dashboard_oca/__manifest__.py | 2 +- .../static/description/index.html | 26 ++++++++++++------- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/spreadsheet_dashboard_oca/README.rst b/spreadsheet_dashboard_oca/README.rst index 6800da8c..e5cf0ed4 100644 --- a/spreadsheet_dashboard_oca/README.rst +++ b/spreadsheet_dashboard_oca/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ========================= Spreadsheet Dashboard Oca ========================= @@ -7,13 +11,13 @@ Spreadsheet Dashboard Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:3cc11a34f632c64341e2dee08d3fc582e30f6a13f049b460e154768d0368a7e6 + !! source digest: sha256:f2dd89e0742dd92768f13deebfcf0df75b55119ebe65a1c534295ed2382eee01 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github @@ -57,14 +61,14 @@ Authors Contributors ------------ -- Enric Tobella -- `Tecnativa `__: +- Enric Tobella +- `Tecnativa `__: - - Carlos Roca + - Carlos Roca -- `Open User Systems `__: +- `Open User Systems `__: - - Chris Mann + - Chris Mann Maintainers ----------- diff --git a/spreadsheet_dashboard_oca/__manifest__.py b/spreadsheet_dashboard_oca/__manifest__.py index 7fc19c2e..f9ddc16d 100644 --- a/spreadsheet_dashboard_oca/__manifest__.py +++ b/spreadsheet_dashboard_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Dashboard Oca", "summary": """ Use OCA Spreadsheets on dashboards configuration""", - "version": "18.0.1.0.1", + "version": "18.0.1.1.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_dashboard_oca/static/description/index.html b/spreadsheet_dashboard_oca/static/description/index.html index fce2b5f1..6e9a9339 100644 --- a/spreadsheet_dashboard_oca/static/description/index.html +++ b/spreadsheet_dashboard_oca/static/description/index.html @@ -3,7 +3,7 @@ -Spreadsheet Dashboard Oca +README.rst -
-

Spreadsheet Dashboard Oca

+
+ + +Odoo Community Association + +
+

Spreadsheet Dashboard Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module allows to edit spreadsheet dashboards using OCA Spreadsheet editor.

Table of contents

@@ -385,7 +390,7 @@

Spreadsheet Dashboard Oca

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -393,15 +398,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -428,5 +433,6 @@

Maintainers

+
From e2668e66e8d75e41b8d916c30e6e5fcffa08d900 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 27 Oct 2025 10:05:07 +0000 Subject: [PATCH 192/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_dashboard_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_dashboard_oca/ --- spreadsheet_dashboard_oca/i18n/es.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/fr.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/fr_FR.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/it.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/nl.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/pt.po | 71 +++++++++++++++++++++++++ spreadsheet_dashboard_oca/i18n/zh_CN.po | 71 +++++++++++++++++++++++++ 7 files changed, 497 insertions(+) diff --git a/spreadsheet_dashboard_oca/i18n/es.po b/spreadsheet_dashboard_oca/i18n/es.po index c70b14c8..a642fa5d 100644 --- a/spreadsheet_dashboard_oca/i18n/es.po +++ b/spreadsheet_dashboard_oca/i18n/es.po @@ -22,16 +22,47 @@ msgstr "" msgid "Active" msgstr "Activo" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "Se puede editar" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "Copiar" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -42,16 +73,46 @@ msgstr "Tablero" msgid "Dashboard Group" msgstr "Tablero grupal" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "Editar" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "Importar datos a hoja de cálculo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -68,6 +129,11 @@ msgstr "Nuevo tablero" msgid "Search operation not supported" msgstr "Operación de búsqueda no soportada" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -99,5 +165,10 @@ msgstr "El valor tiene que ser un booleano" msgid "To dashboard" msgstr "A tablero" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "A tablero en nueva hoja" diff --git a/spreadsheet_dashboard_oca/i18n/fr.po b/spreadsheet_dashboard_oca/i18n/fr.po index 7c9883fa..df9cb4ad 100644 --- a/spreadsheet_dashboard_oca/i18n/fr.po +++ b/spreadsheet_dashboard_oca/i18n/fr.po @@ -19,16 +19,47 @@ msgstr "" msgid "Active" msgstr "" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -39,16 +70,46 @@ msgstr "" msgid "Dashboard Group" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -65,6 +126,11 @@ msgstr "" msgid "Search operation not supported" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -95,3 +161,8 @@ msgstr "" #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_dashboard_oca.spreadsheet_import_mode_dashboard msgid "To dashboard" msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" diff --git a/spreadsheet_dashboard_oca/i18n/fr_FR.po b/spreadsheet_dashboard_oca/i18n/fr_FR.po index 9067d571..b3a88515 100644 --- a/spreadsheet_dashboard_oca/i18n/fr_FR.po +++ b/spreadsheet_dashboard_oca/i18n/fr_FR.po @@ -21,16 +21,47 @@ msgstr "" msgid "Active" msgstr "" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -41,16 +72,46 @@ msgstr "Tableau de bord" msgid "Dashboard Group" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "Modifier" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "Importer des données dans la feuille de calcul" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -67,6 +128,11 @@ msgstr "" msgid "Search operation not supported" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -98,5 +164,10 @@ msgstr "" msgid "To dashboard" msgstr "Au tableau de bord" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "Nouvelle feuille du tableau de bord" diff --git a/spreadsheet_dashboard_oca/i18n/it.po b/spreadsheet_dashboard_oca/i18n/it.po index c7308e20..7efbed55 100644 --- a/spreadsheet_dashboard_oca/i18n/it.po +++ b/spreadsheet_dashboard_oca/i18n/it.po @@ -21,16 +21,47 @@ msgstr "" msgid "Active" msgstr "Attiva" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "Può modificare" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "Copia" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -41,16 +72,46 @@ msgstr "Bacheca" msgid "Dashboard Group" msgstr "Gruppo cruscotto" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "Modifica" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "Importa dati nel foglio di calcolo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -67,6 +128,11 @@ msgstr "Nuovo cruscotto" msgid "Search operation not supported" msgstr "Cerca operazioni non supportate" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -98,5 +164,10 @@ msgstr "Il valore deve essere booleano" msgid "To dashboard" msgstr "Alla bacheca" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "Al nuovo foglio bacheca" diff --git a/spreadsheet_dashboard_oca/i18n/nl.po b/spreadsheet_dashboard_oca/i18n/nl.po index 2deeecf2..17f9caa3 100644 --- a/spreadsheet_dashboard_oca/i18n/nl.po +++ b/spreadsheet_dashboard_oca/i18n/nl.po @@ -21,16 +21,47 @@ msgstr "" msgid "Active" msgstr "" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -41,16 +72,46 @@ msgstr "" msgid "Dashboard Group" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "Bewerken" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "Importeer gegevens naar een spreadsheet" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -67,6 +128,11 @@ msgstr "" msgid "Search operation not supported" msgstr "" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -98,5 +164,10 @@ msgstr "" msgid "To dashboard" msgstr "Naar dashboard" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "Naar dashboard van een nieuw blad" diff --git a/spreadsheet_dashboard_oca/i18n/pt.po b/spreadsheet_dashboard_oca/i18n/pt.po index 06df84d0..fd39c6ee 100644 --- a/spreadsheet_dashboard_oca/i18n/pt.po +++ b/spreadsheet_dashboard_oca/i18n/pt.po @@ -21,16 +21,47 @@ msgstr "" msgid "Active" msgstr "Ativo" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "Pode Editar" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "Copiar" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -41,16 +72,46 @@ msgstr "Painel" msgid "Dashboard Group" msgstr "Grupo de Painel" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "Editar" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "Importar dados para a folha de cálculo" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -67,6 +128,11 @@ msgstr "Novo painel" msgid "Search operation not supported" msgstr "Operação de pesquisa não suportada" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -98,5 +164,10 @@ msgstr "O valor deve ser um booleano" msgid "To dashboard" msgstr "Para painel" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "Nova folha para painel" diff --git a/spreadsheet_dashboard_oca/i18n/zh_CN.po b/spreadsheet_dashboard_oca/i18n/zh_CN.po index 1542cb98..d186fee0 100644 --- a/spreadsheet_dashboard_oca/i18n/zh_CN.po +++ b/spreadsheet_dashboard_oca/i18n/zh_CN.po @@ -21,16 +21,47 @@ msgstr "" msgid "Active" msgstr "有效" +#. module: spreadsheet_dashboard_oca +#. odoo-javascript +#: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 +msgid "Add to dashboard" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit msgid "Can Edit" msgstr "可编辑" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Cancel" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Copy" msgstr "复制" +#. module: spreadsheet_dashboard_oca +#: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form +msgid "Create" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard +msgid "Create dashboard from spreadsheet" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid +msgid "Created by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date +msgid "Created on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id msgid "Dashboard" @@ -41,16 +72,46 @@ msgstr "仪表盘" msgid "Dashboard Group" msgstr "仪表盘组" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name +msgid "Dashboard Name" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id +msgid "Dashboard Section" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name +msgid "Display Name" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view msgid "Edit" msgstr "编辑" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id +msgid "ID" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import msgid "Import data to spreadsheet" msgstr "导入数据到电子表格" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date +msgid "Last Updated on" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name msgid "Name" @@ -67,6 +128,11 @@ msgstr "新建仪表盘" msgid "Search operation not supported" msgstr "不支持搜索操作" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id +msgid "Spreadsheet" +msgstr "" + #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard msgid "Spreadsheet Dashboard" @@ -98,5 +164,10 @@ msgstr "值必须为布尔型" msgid "To dashboard" msgstr "到仪表盘" +#. module: spreadsheet_dashboard_oca +#: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids +msgid "User Groups" +msgstr "" + #~ msgid "To dashboard new sheet" #~ msgstr "到仪表盘新工作表" From c42d95c2549c1f77c76667d84c926f956a499972 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 28 Oct 2025 07:55:58 +0000 Subject: [PATCH 193/235] Translated using Weblate (Italian) Currently translated at 100.0% (30 of 30 strings) Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_dashboard_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_dashboard_oca/it/ --- spreadsheet_dashboard_oca/i18n/it.po | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/spreadsheet_dashboard_oca/i18n/it.po b/spreadsheet_dashboard_oca/i18n/it.po index 7efbed55..36459161 100644 --- a/spreadsheet_dashboard_oca/i18n/it.po +++ b/spreadsheet_dashboard_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-10-20 08:42+0000\n" +"PO-Revision-Date: 2025-10-28 10:43+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -25,7 +25,7 @@ msgstr "Attiva" #. odoo-javascript #: code:addons/spreadsheet_dashboard_oca/static/src/bundle/spreadsheet_to_dashboard.esm.js:0 msgid "Add to dashboard" -msgstr "" +msgstr "Aggiungi alla bacheca" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__can_edit @@ -35,7 +35,7 @@ msgstr "Può modificare" #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form msgid "Cancel" -msgstr "" +msgstr "Annulla" #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view @@ -45,22 +45,22 @@ msgstr "Copia" #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_to_dashboard_view_form msgid "Create" -msgstr "" +msgstr "Crea" #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_to_dashboard msgid "Create dashboard from spreadsheet" -msgstr "" +msgstr "Crea bacheca da foglio di calcolo" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_spreadsheet_import__dashboard_id @@ -75,17 +75,17 @@ msgstr "Gruppo cruscotto" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__name msgid "Dashboard Name" -msgstr "" +msgstr "Nome bacheca" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__dashboard_group_id msgid "Dashboard Section" -msgstr "" +msgstr "Sezione bacheca" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: spreadsheet_dashboard_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_dashboard_oca.spreadsheet_dashboard_tree_view @@ -95,7 +95,7 @@ msgstr "Modifica" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__id msgid "ID" -msgstr "" +msgstr "ID" #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_spreadsheet_import @@ -105,12 +105,12 @@ msgstr "Importa dati nel foglio di calcolo" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_dashboard__name @@ -131,7 +131,7 @@ msgstr "Cerca operazioni non supportate" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__spreadsheet_id msgid "Spreadsheet" -msgstr "" +msgstr "Foglio di calcolo" #. module: spreadsheet_dashboard_oca #: model:ir.model,name:spreadsheet_dashboard_oca.model_spreadsheet_dashboard @@ -167,7 +167,7 @@ msgstr "Alla bacheca" #. module: spreadsheet_dashboard_oca #: model:ir.model.fields,field_description:spreadsheet_dashboard_oca.field_spreadsheet_to_dashboard__group_ids msgid "User Groups" -msgstr "" +msgstr "Gruppi utente" #~ msgid "To dashboard new sheet" #~ msgstr "Al nuovo foglio bacheca" From ec66f611a8b2afbe831d18908b90225474bff02e Mon Sep 17 00:00:00 2001 From: Florent THOMAS Date: Fri, 21 Nov 2025 01:22:04 +0100 Subject: [PATCH 194/235] [IMP] spreadsheet_oca: * Add Kanban views * Also add active option [IMP] spreadsheet_oca: * Simplify partner usage * Add tags * Improve kanban view [IMP] spreadsheet_oca: Improve form view [IMP] spreadhseet_oca: add tag menu [IMP] spreadhseet_oca: add default image IMP: Add tag on view [REF] spreadsheet_oca: no more partner [REF] spreadsheet_oca: no more partner [REF] spreadsheet_oca: no more partner [REF]rename file [ACL]Ad specific rule for manager --- spreadsheet_oca/README.rst | 10 +- spreadsheet_oca/models/__init__.py | 1 + .../models/spreadsheet_abstract.py | 1 + .../models/spreadsheet_spreadsheet.py | 7 +- .../models/spreadsheet_spreadsheet_tag.py | 24 +++ spreadsheet_oca/readme/CONTRIBUTORS.md | 4 +- spreadsheet_oca/security/ir.model.access.csv | 2 + spreadsheet_oca/static/description/index.html | 45 +++--- .../views/spreadsheet_spreadsheet.xml | 150 +++++++++++++++++- 9 files changed, 205 insertions(+), 39 deletions(-) create mode 100644 spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index b1adfc68..e62262cc 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -1,7 +1,3 @@ -.. image:: https://odoo-community.org/readme-banner-image - :target: https://odoo-community.org/get-involved?utm_source=readme - :alt: Odoo Community Association - =============== Spreadsheet Oca =============== @@ -17,7 +13,7 @@ Spreadsheet Oca .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github @@ -129,6 +125,10 @@ Contributors - Chris Mann +- `Mind And Go `__ + + - Florent THOMAS + Maintainers ----------- diff --git a/spreadsheet_oca/models/__init__.py b/spreadsheet_oca/models/__init__.py index 60d31886..c5ec2360 100644 --- a/spreadsheet_oca/models/__init__.py +++ b/spreadsheet_oca/models/__init__.py @@ -1,4 +1,5 @@ from . import spreadsheet_abstract +from . import spreadsheet_spreadsheet_tag from . import spreadsheet_spreadsheet from . import spreadsheet_oca_revision from . import ir_websocket diff --git a/spreadsheet_oca/models/spreadsheet_abstract.py b/spreadsheet_oca/models/spreadsheet_abstract.py index c43be6bb..86a1e317 100644 --- a/spreadsheet_oca/models/spreadsheet_abstract.py +++ b/spreadsheet_oca/models/spreadsheet_abstract.py @@ -17,6 +17,7 @@ class SpreadsheetAbstract(models.AbstractModel): _inherit = ["bus.listener.mixin"] name = fields.Char(required=True) + active = fields.Boolean(default=True) spreadsheet_binary_data = fields.Binary( string="Spreadsheet file", default=lambda self: self._empty_spreadsheet_data_base64(), diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet.py b/spreadsheet_oca/models/spreadsheet_spreadsheet.py index 86263f8d..55a9ae9f 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet.py @@ -10,10 +10,11 @@ class SpreadsheetSpreadsheet(models.Model): _name = "spreadsheet.spreadsheet" - _inherit = "spreadsheet.abstract" + _inherit = ["spreadsheet.abstract", "mail.thread", "mail.activity.mixin"] _description = "Spreadsheet" filename = fields.Char(compute="_compute_filename") + badge_image = fields.Image("Badge Background", max_width=1024, max_height=1024) owner_id = fields.Many2one( "res.users", required=True, default=lambda r: r.env.user.id ) @@ -51,6 +52,10 @@ class SpreadsheetSpreadsheet(models.Model): " if this company is in the current companies.", ) + spreadsheet_tag_ids = fields.Many2many( + string="Tags", comodel_name="spreadsheet.spreadsheet.tag" + ) + @api.depends("name") def _compute_filename(self): for record in self: diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py new file mode 100644 index 00000000..29fc9593 --- /dev/null +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py @@ -0,0 +1,24 @@ +# Copyright 2022 CreuBlanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from random import randint + +from odoo import fields, models + + +class SpreadsheetSpreadsheetTags(models.Model): + _name = "spreadsheet.spreadsheet.tag" + _description = "Spreadsheet Tag" + + def _get_default_color(self): + return randint(1, 11) + + name = fields.Char(required=True, translate=True) + color = fields.Integer( + default=_get_default_color, + help="Transparent tags are not visible in the kanban view", + ) + + _sql_constraints = [ + ("name_uniq", "unique (name)", "A tag with the same name already exists."), + ] diff --git a/spreadsheet_oca/readme/CONTRIBUTORS.md b/spreadsheet_oca/readme/CONTRIBUTORS.md index b262cef9..e5a41e3d 100644 --- a/spreadsheet_oca/readme/CONTRIBUTORS.md +++ b/spreadsheet_oca/readme/CONTRIBUTORS.md @@ -2,4 +2,6 @@ - [Tecnativa](https://www.tecnativa.com): - Carlos Roca - [Open User Systems](https://www.openusersystems.com): - - Chris Mann \ No newline at end of file + - Chris Mann +- [Mind And Go](https://mind-and-go.com) + - Florent THOMAS \ No newline at end of file diff --git a/spreadsheet_oca/security/ir.model.access.csv b/spreadsheet_oca/security/ir.model.access.csv index f25d2e12..9d6b9d8b 100644 --- a/spreadsheet_oca/security/ir.model.access.csv +++ b/spreadsheet_oca/security/ir.model.access.csv @@ -4,3 +4,5 @@ access_spreadsheet_oca_revision,access_spreadsheet_oca_revision,model_spreadshee spreadsheet_oca.access_spreadsheet_spreadsheet_import,access_spreadsheet_spreadsheet_import,spreadsheet_oca.model_spreadsheet_spreadsheet_import,base.group_user,1,1,1,1 access_spreadsheet_import_mode,access_spreadsheet_oca_revision,model_spreadsheet_spreadsheet_import_mode,base.group_user,1,0,0,0 access_spreadsheet_select_row_number,access_spreadsheet_select_row_number,model_spreadsheet_select_row_number,base.group_user,1,1,1,1 +access_spreadsheet_spreadsheet_tag,access_spreadsheet_spreadsheet_tag,model_spreadsheet_spreadsheet_tag,spreadsheet_oca.group_user,1,0,1,0 +access_spreadsheet_spreadsheet_manager_tag,access_spreadsheet_spreadsheet_manager_tag,model_spreadsheet_spreadsheet_tag,spreadsheet_oca.group_manager,1,1,1,1 diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 1245a2f4..8882acac 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -3,16 +3,15 @@ -README.rst +Spreadsheet Oca -
+
+

Spreadsheet Oca

- - -Odoo Community Association - -
-

Spreadsheet Oca

-

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets using Odoo CE.

It is an alternative to the proprietary module spreadsheet_edition @@ -397,9 +391,9 @@

Spreadsheet Oca

-

Usage

+

Usage

-

Create a new spreadsheet

+

Create a new spreadsheet

-

Development

+

Development

If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -461,15 +455,15 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • CreuBlanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

@@ -496,6 +492,5 @@

Maintainers

-
diff --git a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml index 66dc4882..60d1ea15 100644 --- a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml +++ b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml @@ -6,7 +6,26 @@ spreadsheet.spreadsheet.search (in spreadsheet_oca) spreadsheet.spreadsheet - + + + + + + + + + + + + @@ -42,17 +61,30 @@ icon="fa-pencil" />
-

- -

+ +
+

+
+ +
+

+
+ - + + + + + + spreadsheet.spreadsheet.kanban + spreadsheet.spreadsheet + + + + + Edit + Delete + + + + +
+
+ + + +
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+ + + Spreadsheets Tags + spreadsheet.spreadsheet.tag + list,form + [] + {} + + Spreadsheets spreadsheet.spreadsheet - list,form + kanban,list,form [] - {} + {'search_default_mysheets': 1} @@ -93,4 +214,19 @@ + + + Configuration + + + + + + + Spreadsheets Tags + + + + + From 729a87caf449218c86c266637c0b4092e6624703 Mon Sep 17 00:00:00 2001 From: Florent THOMAS Date: Fri, 12 Dec 2025 09:40:39 +0100 Subject: [PATCH 195/235] [IMP]Active ribbon and chatter on view --- spreadsheet_oca/views/spreadsheet_spreadsheet.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml index 60d1ea15..b2684e67 100644 --- a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml +++ b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml @@ -53,6 +53,13 @@
+ +
- - -
-
+
Last updated at
From 8c2b3cc4b5c8ed2e630dffb59c4428f59c82ebad Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Tue, 24 Feb 2026 14:20:50 +0100 Subject: [PATCH 204/235] [FIX] spreadsheet_oca: Remove duplicated charts that are throwing errors. --- .../src/spreadsheet/bundle/odoo_panels.esm.js | 85 ------------------- 1 file changed, 85 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index dfbe770a..0426e874 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -1,12 +1,7 @@ -import * as spreadsheet from "@odoo/o-spreadsheet"; - import {Domain} from "@web/core/domain"; import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; import {_t} from "@web/core/l10n/translation"; import {useService} from "@web/core/utils/hooks"; - -const {chartSidePanelComponentRegistry, chartSubtypeRegistry} = spreadsheet.registries; -const {PieChartDesignPanel} = spreadsheet.components; const {Component} = owl; export class OdooPanel extends Component { @@ -82,83 +77,3 @@ class OdooStackablePanel extends OdooPanel { } } OdooStackablePanel.template = "spreadsheet_oca.OdooStackablePanel"; - -chartSidePanelComponentRegistry - .add("odoo_line", { - configuration: OdooStackablePanel, - design: PieChartDesignPanel, - }) - .add("odoo_bar", { - configuration: OdooStackablePanel, - design: PieChartDesignPanel, - }) - .add("odoo_pie", { - configuration: OdooPanel, - design: PieChartDesignPanel, - }); - -chartSubtypeRegistry.add("odoo_line", { - matcher: (definition) => - definition.type === "odoo_line" && !definition.stacked && !definition.fillArea, - subtypeDefinition: {stacked: false, fillArea: false}, - displayName: _t("Line"), - chartSubtype: "odoo_line", - chartType: "odoo_line", - category: "line", - preview: "o-spreadsheet-ChartPreview.LINE_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_line", { - matcher: (definition) => - definition.type === "odoo_line" && definition.stacked && !definition.fillArea, - subtypeDefinition: {stacked: true, fillArea: false}, - displayName: _t("Stacked Line"), - chartSubtype: "odoo_stacked_line", - chartType: "odoo_line", - category: "line", - preview: "o-spreadsheet-ChartPreview.STACKED_LINE_CHART", -}); -chartSubtypeRegistry.add("odoo_area", { - matcher: (definition) => - definition.type === "odoo_line" && !definition.stacked && definition.fillArea, - subtypeDefinition: {stacked: false, fillArea: true}, - displayName: _t("Area"), - chartSubtype: "odoo_area", - chartType: "odoo_line", - category: "area", - preview: "o-spreadsheet-ChartPreview.AREA_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_area", { - matcher: (definition) => - definition.type === "odoo_line" && definition.stacked && definition.fillArea, - subtypeDefinition: {stacked: true, fillArea: true}, - displayName: _t("Stacked Area"), - chartSubtype: "odoo_stacked_area", - chartType: "odoo_line", - category: "area", - preview: "o-spreadsheet-ChartPreview.STACKED_AREA_CHART", -}); -chartSubtypeRegistry.add("odoo_bar", { - matcher: (definition) => definition.type === "odoo_bar" && !definition.stacked, - subtypeDefinition: {stacked: false}, - displayName: _t("Column"), - chartSubtype: "odoo_bar", - chartType: "odoo_bar", - category: "column", - preview: "o-spreadsheet-ChartPreview.COLUMN_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_bar", { - matcher: (definition) => definition.type === "odoo_bar" && definition.stacked, - subtypeDefinition: {stacked: true}, - displayName: _t("Stacked Column"), - chartSubtype: "odoo_stacked_bar", - chartType: "odoo_bar", - category: "column", - preview: "o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART", -}); -chartSubtypeRegistry.add("odoo_pie", { - displayName: _t("Pie"), - chartSubtype: "odoo_pie", - chartType: "odoo_pie", - category: "pie", - preview: "o-spreadsheet-ChartPreview.PIE_CHART", -}); From f77f62f3987a0b4b34e9962e50d227e9c4a0d6a3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 24 Feb 2026 16:07:49 +0000 Subject: [PATCH 205/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 42 ------------------------ 1 file changed, 42 deletions(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index c776f776..40ad7524 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -108,12 +108,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -170,12 +164,6 @@ msgstr "" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -479,12 +467,6 @@ msgstr "" msgid "Last updated at" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -635,12 +617,6 @@ msgstr "" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -817,24 +793,6 @@ msgstr "" msgid "Stacked" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" From 8dd1b0857fd24925bb4dc6cf10b6c465daa8a8b1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 24 Feb 2026 16:10:18 +0000 Subject: [PATCH 206/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index f5f24bfc..56247c01 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:65bc318ca4bd4e29a941983b95b811a2ba7e83b816554ba06a37a7cd4ff0dd64 + !! source digest: sha256:2206d6774729ce1b0ca6d031239dbe734b2217b765ccad932d7fbdc49efd06bf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index b992d7e0..52bda051 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.1.1", + "version": "18.0.1.1.2", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index b8a9d39c..9635efbe 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:65bc318ca4bd4e29a941983b95b811a2ba7e83b816554ba06a37a7cd4ff0dd64 +!! source digest: sha256:2206d6774729ce1b0ca6d031239dbe734b2217b765ccad932d7fbdc49efd06bf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From 9db53af95deb553e2b583072a9d503caf25f0bb8 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 24 Feb 2026 16:10:27 +0000 Subject: [PATCH 207/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 42 ----------------------- spreadsheet_oca/i18n/fr.po | 42 ----------------------- spreadsheet_oca/i18n/fr_FR.po | 42 ----------------------- spreadsheet_oca/i18n/it.po | 63 ++++++++++++----------------------- spreadsheet_oca/i18n/nl.po | 42 ----------------------- spreadsheet_oca/i18n/pt.po | 42 ----------------------- spreadsheet_oca/i18n/zh_CN.po | 42 ----------------------- 7 files changed, 21 insertions(+), 294 deletions(-) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index f9a78f98..fdaa8b64 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -112,12 +112,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -174,12 +168,6 @@ msgstr "Código" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -483,12 +471,6 @@ msgstr "Última actualización el" msgid "Last updated at" msgstr "Última Actualización el" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -639,12 +621,6 @@ msgstr "Propietario" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -821,24 +797,6 @@ msgstr "" msgid "Stacked" msgstr "Apilados" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index 92144652..f1738fd1 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -111,12 +111,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -173,12 +167,6 @@ msgstr "" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -482,12 +470,6 @@ msgstr "Dernière mise à jour le" msgid "Last updated at" msgstr "Dernière mise à jour à" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -638,12 +620,6 @@ msgstr "Propriétaire" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -820,24 +796,6 @@ msgstr "" msgid "Stacked" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 15775d64..6f5e2a7e 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -109,12 +109,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -171,12 +165,6 @@ msgstr "" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -480,12 +468,6 @@ msgstr "" msgid "Last updated at" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -636,12 +618,6 @@ msgstr "" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -818,24 +794,6 @@ msgstr "" msgid "Stacked" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index ca48e874..365ce3f0 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -111,12 +111,6 @@ msgstr "Si è sicuri di voler cancellare questo elenco?" msgid "Are you sure you want to delete this pivot?" msgstr "Si è sicuri di voler cancellare questa pivot?" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "Area" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -173,12 +167,6 @@ msgstr "Codice" msgid "Color" msgstr "Colore" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "Colonna" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -484,12 +472,6 @@ msgstr "Ultimo aggiornamento il" msgid "Last updated at" msgstr "Ultimo aggiornamento il" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "Riga" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -640,12 +622,6 @@ msgstr "Proprietario" msgid "Ownership" msgstr "Proprietà" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "Torta" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -822,24 +798,6 @@ msgstr "Immagine foglio di calcolo" msgid "Stacked" msgstr "In coda" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "Area riempita" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "Colonna riempita" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "Riga riempita" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" @@ -978,6 +936,27 @@ msgstr "non aggiornato" msgid "websocket message handling" msgstr "gestione messaggio websocket" +#~ msgid "Area" +#~ msgstr "Area" + +#~ msgid "Column" +#~ msgstr "Colonna" + +#~ msgid "Line" +#~ msgstr "Riga" + +#~ msgid "Pie" +#~ msgstr "Torta" + +#~ msgid "Stacked Area" +#~ msgstr "Area riempita" + +#~ msgid "Stacked Column" +#~ msgstr "Colonna riempita" + +#~ msgid "Stacked Line" +#~ msgstr "Riga riempita" + #~ msgid "Add sheet to spreadsheet" #~ msgstr "Aggiungi scheda a foglIo di calcolo" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index d1bd8948..fe811c34 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -111,12 +111,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -173,12 +167,6 @@ msgstr "" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -482,12 +470,6 @@ msgstr "Laatst bijgewerkt op" msgid "Last updated at" msgstr "Laatst bijgewerkt op" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -638,12 +620,6 @@ msgstr "Eigenaar" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -820,24 +796,6 @@ msgstr "" msgid "Stacked" msgstr "Gestapeld" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 23e8fabc..4c561d71 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -111,12 +111,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -173,12 +167,6 @@ msgstr "Código" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -482,12 +470,6 @@ msgstr "Última Actualização em" msgid "Last updated at" msgstr "Última Modificação a" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -638,12 +620,6 @@ msgstr "Dono" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -820,24 +796,6 @@ msgstr "" msgid "Stacked" msgstr "Empilhados" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index d8e24f07..41b690ae 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -109,12 +109,6 @@ msgstr "" msgid "Are you sure you want to delete this pivot?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -171,12 +165,6 @@ msgstr "" msgid "Color" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -480,12 +468,6 @@ msgstr "" msgid "Last updated at" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -636,12 +618,6 @@ msgstr "" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -818,24 +794,6 @@ msgstr "" msgid "Stacked" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" From 064a209724681473a642d72fdf7500ca1426c32f Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 24 Feb 2026 17:00:11 +0000 Subject: [PATCH 208/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 46 ++++++------------------ 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 40ad7524..20044d0d 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -102,12 +102,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -249,12 +243,6 @@ msgstr "" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -407,24 +395,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -484,12 +460,6 @@ msgstr "" msgid "Manager" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -617,22 +587,28 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +msgid "Previous" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" +msgid "Quarter" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -msgid "Previous" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Quarter" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" msgstr "" #. module: spreadsheet_oca From 1889eef4356d0bffa0ebc775c80a91c972e6682e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 24 Feb 2026 17:04:41 +0000 Subject: [PATCH 209/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 56247c01..56c1beb0 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:2206d6774729ce1b0ca6d031239dbe734b2217b765ccad932d7fbdc49efd06bf + !! source digest: sha256:c8a74e3809101635545a0644d7a03bdb4c4707494a3ee713763e8c4b71a167ab !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 52bda051..80e58fa6 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.1.2", + "version": "18.0.1.2.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 9635efbe..e4994893 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:2206d6774729ce1b0ca6d031239dbe734b2217b765ccad932d7fbdc49efd06bf +!! source digest: sha256:c8a74e3809101635545a0644d7a03bdb4c4707494a3ee713763e8c4b71a167ab !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From 8652c7b12018746321bca36df68a36a222f669cb Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 24 Feb 2026 17:04:54 +0000 Subject: [PATCH 210/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 63 ++++++++++++++------------------- spreadsheet_oca/i18n/fr.po | 60 +++++++++++++------------------ spreadsheet_oca/i18n/fr_FR.po | 46 ++++++------------------ spreadsheet_oca/i18n/it.po | 66 ++++++++++++++++------------------- spreadsheet_oca/i18n/nl.po | 57 +++++++++++------------------- spreadsheet_oca/i18n/pt.po | 63 ++++++++++++++------------------- spreadsheet_oca/i18n/zh_CN.po | 46 ++++++------------------ 7 files changed, 151 insertions(+), 250 deletions(-) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index fdaa8b64..1c714dd7 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -106,12 +106,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -253,12 +247,6 @@ msgstr "Valor por defecto" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "Dimensiones" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -411,24 +399,12 @@ msgstr "Importar Pivot" msgid "Import data to spreadsheet" msgstr "Importar datos a hoja de cálculo" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "Insertar pivot dinámica" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "Insertar pivot" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -488,12 +464,6 @@ msgstr "Lista de nombres" msgid "Manager" msgstr "Administrador" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "Medidas" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -621,12 +591,6 @@ msgstr "Propietario" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" -msgstr "Nombre de pivot" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -639,6 +603,18 @@ msgstr "Anterior" msgid "Quarter" msgstr "Trimestre" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -931,6 +907,21 @@ msgstr "no actualizado" msgid "websocket message handling" msgstr "gestión de mensajes websocket" +#~ msgid "Dimensions" +#~ msgstr "Dimensiones" + +#~ msgid "Insert dynamic pivot" +#~ msgstr "Insertar pivot dinámica" + +#~ msgid "Insert pivot" +#~ msgstr "Insertar pivot" + +#~ msgid "Measures" +#~ msgstr "Medidas" + +#~ msgid "Pivot name" +#~ msgstr "Nombre de pivot" + #~ msgid "Add sheet to spreadsheet" #~ msgstr "Añadir hoja a la hoja de cálculo" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index f1738fd1..6ec9aa07 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -105,12 +105,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -252,12 +246,6 @@ msgstr "" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "Dimensions" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -410,24 +398,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "Importer des données au tableur" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "Insérer un pivot dynamique" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "Insérer un pivot" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -487,12 +463,6 @@ msgstr "" msgid "Manager" msgstr "Gestionnaire" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -620,12 +590,6 @@ msgstr "Propriétaire" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" -msgstr "Nom du pivot" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -638,6 +602,18 @@ msgstr "Précédent" msgid "Quarter" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -930,6 +906,18 @@ msgstr "" msgid "websocket message handling" msgstr "" +#~ msgid "Dimensions" +#~ msgstr "Dimensions" + +#~ msgid "Insert dynamic pivot" +#~ msgstr "Insérer un pivot dynamique" + +#~ msgid "Insert pivot" +#~ msgstr "Insérer un pivot" + +#~ msgid "Pivot name" +#~ msgstr "Nom du pivot" + #~ msgid "Add sheet to spreadsheet" #~ msgstr "Ajouter une feuille au tableur" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 6f5e2a7e..474db899 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -103,12 +103,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -250,12 +244,6 @@ msgstr "" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -408,24 +396,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -485,12 +461,6 @@ msgstr "" msgid "Manager" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -618,22 +588,28 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +msgid "Previous" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" +msgid "Quarter" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -msgid "Previous" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Quarter" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" msgstr "" #. module: spreadsheet_oca diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 365ce3f0..d14aa2f1 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -105,12 +105,6 @@ msgstr "In archivio" msgid "Are you sure you want to delete this list?" msgstr "Si è sicuri di voler cancellare questo elenco?" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "Si è sicuri di voler cancellare questa pivot?" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -252,12 +246,6 @@ msgstr "Valore predefinito" msgid "Delete" msgstr "Cancella" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "Dimensioni" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -412,24 +400,12 @@ msgstr "Importa pivot" msgid "Import data to spreadsheet" msgstr "Importa dati nel foglio di calcolo" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "Inserisci pivot dinamico" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "Inserisci elenco" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "Inserisci pivot" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -489,12 +465,6 @@ msgstr "Nome elenco" msgid "Manager" msgstr "Supervisore" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "Misure" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -622,12 +592,6 @@ msgstr "Proprietario" msgid "Ownership" msgstr "Proprietà" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" -msgstr "Nome pivot" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -640,6 +604,18 @@ msgstr "Precedente" msgid "Quarter" msgstr "Trimestre" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -936,6 +912,24 @@ msgstr "non aggiornato" msgid "websocket message handling" msgstr "gestione messaggio websocket" +#~ msgid "Are you sure you want to delete this pivot?" +#~ msgstr "Si è sicuri di voler cancellare questa pivot?" + +#~ msgid "Dimensions" +#~ msgstr "Dimensioni" + +#~ msgid "Insert dynamic pivot" +#~ msgstr "Inserisci pivot dinamico" + +#~ msgid "Insert pivot" +#~ msgstr "Inserisci pivot" + +#~ msgid "Measures" +#~ msgstr "Misure" + +#~ msgid "Pivot name" +#~ msgstr "Nome pivot" + #~ msgid "Area" #~ msgstr "Area" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index fe811c34..271e1b8b 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -105,12 +105,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -252,12 +246,6 @@ msgstr "Standaardwaarde" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "Dimensies" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -410,24 +398,12 @@ msgstr "Importeer draaipunt" msgid "Import data to spreadsheet" msgstr "Gegevens importeren naar spreadsheet" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "Draaipunt invoegen" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -487,12 +463,6 @@ msgstr "Naam van lijst" msgid "Manager" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "Afmetingen" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -620,12 +590,6 @@ msgstr "Eigenaar" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -638,6 +602,18 @@ msgstr "Vorig" msgid "Quarter" msgstr "Kwartaal" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -928,6 +904,15 @@ msgstr "niet geüpdate" msgid "websocket message handling" msgstr "afhandeling van websocket-berichten" +#~ msgid "Dimensions" +#~ msgstr "Dimensies" + +#~ msgid "Insert pivot" +#~ msgstr "Draaipunt invoegen" + +#~ msgid "Measures" +#~ msgstr "Afmetingen" + #~ msgid "Add sheet to spreadsheet" #~ msgstr "Blad toevoegen aan spreadsheet" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 4c561d71..3c1ddeb5 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -105,12 +105,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -252,12 +246,6 @@ msgstr "Valor predefinido" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "Dimensões" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -410,24 +398,12 @@ msgstr "Importar Pivô" msgid "Import data to spreadsheet" msgstr "Importar dados para a folha de cálculo" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "Inserir pivô dinâmico" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "Inserir pivô" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -487,12 +463,6 @@ msgstr "Nome da lista" msgid "Manager" msgstr "Gestor" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "Medidas" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -620,12 +590,6 @@ msgstr "Dono" msgid "Ownership" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" -msgstr "Nome do pivô" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -638,6 +602,18 @@ msgstr "Anterior" msgid "Quarter" msgstr "Trimestre" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" +msgstr "" + #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -928,6 +904,21 @@ msgstr "não atualizado" msgid "websocket message handling" msgstr "tratamento de mensagens websocket" +#~ msgid "Dimensions" +#~ msgstr "Dimensões" + +#~ msgid "Insert dynamic pivot" +#~ msgstr "Inserir pivô dinâmico" + +#~ msgid "Insert pivot" +#~ msgstr "Inserir pivô" + +#~ msgid "Measures" +#~ msgstr "Medidas" + +#~ msgid "Pivot name" +#~ msgstr "Nome do pivô" + #~ msgid "Add sheet to spreadsheet" #~ msgstr "Adicionar folha ao painel" diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index 41b690ae..f65d4138 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -103,12 +103,6 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this pivot?" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -250,12 +244,6 @@ msgstr "" msgid "Delete" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Dimensions" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name @@ -408,24 +396,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert dynamic pivot" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Insert list" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert pivot" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower msgid "Is Follower" @@ -485,12 +461,6 @@ msgstr "" msgid "Manager" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Measures" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 @@ -618,22 +588,28 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +msgid "Previous" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Pivot name" +msgid "Quarter" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 -msgid "Previous" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Dynamic" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Quarter" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Re-insert Static" msgstr "" #. module: spreadsheet_oca From d0543fa803971cb0e0956bd3a06a6533ba70ba69 Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Wed, 25 Feb 2026 08:19:28 +0100 Subject: [PATCH 211/235] Revert "[FIX] spreadsheet_oca: Remove duplicated charts that are throwing errors." This reverts commit 7140455df5b1b083f9d5146427c9a7b580a0b75b. --- .../src/spreadsheet/bundle/odoo_panels.esm.js | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index 0426e874..dfbe770a 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -1,7 +1,12 @@ +import * as spreadsheet from "@odoo/o-spreadsheet"; + import {Domain} from "@web/core/domain"; import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; import {_t} from "@web/core/l10n/translation"; import {useService} from "@web/core/utils/hooks"; + +const {chartSidePanelComponentRegistry, chartSubtypeRegistry} = spreadsheet.registries; +const {PieChartDesignPanel} = spreadsheet.components; const {Component} = owl; export class OdooPanel extends Component { @@ -77,3 +82,83 @@ class OdooStackablePanel extends OdooPanel { } } OdooStackablePanel.template = "spreadsheet_oca.OdooStackablePanel"; + +chartSidePanelComponentRegistry + .add("odoo_line", { + configuration: OdooStackablePanel, + design: PieChartDesignPanel, + }) + .add("odoo_bar", { + configuration: OdooStackablePanel, + design: PieChartDesignPanel, + }) + .add("odoo_pie", { + configuration: OdooPanel, + design: PieChartDesignPanel, + }); + +chartSubtypeRegistry.add("odoo_line", { + matcher: (definition) => + definition.type === "odoo_line" && !definition.stacked && !definition.fillArea, + subtypeDefinition: {stacked: false, fillArea: false}, + displayName: _t("Line"), + chartSubtype: "odoo_line", + chartType: "odoo_line", + category: "line", + preview: "o-spreadsheet-ChartPreview.LINE_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_line", { + matcher: (definition) => + definition.type === "odoo_line" && definition.stacked && !definition.fillArea, + subtypeDefinition: {stacked: true, fillArea: false}, + displayName: _t("Stacked Line"), + chartSubtype: "odoo_stacked_line", + chartType: "odoo_line", + category: "line", + preview: "o-spreadsheet-ChartPreview.STACKED_LINE_CHART", +}); +chartSubtypeRegistry.add("odoo_area", { + matcher: (definition) => + definition.type === "odoo_line" && !definition.stacked && definition.fillArea, + subtypeDefinition: {stacked: false, fillArea: true}, + displayName: _t("Area"), + chartSubtype: "odoo_area", + chartType: "odoo_line", + category: "area", + preview: "o-spreadsheet-ChartPreview.AREA_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_area", { + matcher: (definition) => + definition.type === "odoo_line" && definition.stacked && definition.fillArea, + subtypeDefinition: {stacked: true, fillArea: true}, + displayName: _t("Stacked Area"), + chartSubtype: "odoo_stacked_area", + chartType: "odoo_line", + category: "area", + preview: "o-spreadsheet-ChartPreview.STACKED_AREA_CHART", +}); +chartSubtypeRegistry.add("odoo_bar", { + matcher: (definition) => definition.type === "odoo_bar" && !definition.stacked, + subtypeDefinition: {stacked: false}, + displayName: _t("Column"), + chartSubtype: "odoo_bar", + chartType: "odoo_bar", + category: "column", + preview: "o-spreadsheet-ChartPreview.COLUMN_CHART", +}); +chartSubtypeRegistry.add("odoo_stacked_bar", { + matcher: (definition) => definition.type === "odoo_bar" && definition.stacked, + subtypeDefinition: {stacked: true}, + displayName: _t("Stacked Column"), + chartSubtype: "odoo_stacked_bar", + chartType: "odoo_bar", + category: "column", + preview: "o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART", +}); +chartSubtypeRegistry.add("odoo_pie", { + displayName: _t("Pie"), + chartSubtype: "odoo_pie", + chartType: "odoo_pie", + category: "pie", + preview: "o-spreadsheet-ChartPreview.PIE_CHART", +}); From 26df97cae196b235319c64018117bb2c561e6d2e Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Wed, 25 Feb 2026 08:56:10 +0100 Subject: [PATCH 212/235] [FIX] spreadsheet_oca: Use the correct graphs depending on the type of each one Before these changes, all existing chart types were displayed in the selector. With these changes, the table type is taken into account, whether it is inserted from Odoo or from the spreadsheet itself, to determine which chart types are usable and which are not. --- .../src/spreadsheet/bundle/chart_panel.esm.js | 80 ++++++++++++------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js index b6a1d23b..41407c51 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js @@ -1,41 +1,67 @@ import * as spreadsheet from "@odoo/o-spreadsheet"; import {patch} from "@web/core/utils/patch"; +import {onWillUpdateProps} from "@odoo/owl"; -const {chartRegistry} = spreadsheet.registries; -const {ChartPanel} = spreadsheet.components; -export function isOdooKey(code) { - return code.startsWith("odoo_"); -} +const {chartSubtypeRegistry} = spreadsheet.registries; +const {ChartTypePicker} = spreadsheet.components; -patch(ChartPanel.prototype, { - get chartTypes() { - return this.filterChartTypes(isOdooKey(this.getChartDefinition().type)); +const ODOO_PREFIX = "odoo_"; +const isOdooKey = (key) => key?.startsWith(ODOO_PREFIX); + +const groupByCategory = (items) => + items.reduce((acc, item) => { + (acc[item.category] ||= []).push(item); + return acc; + }, {}); + +const getFigureDefinition = (env, figureId) => + env.model.getters.getChartDefinition(figureId); + +patch(ChartTypePicker.prototype, { + setup() { + super.setup(); + const refresh = (figureId) => this.filterCategoriesChartType(figureId); + refresh(this.props.figureId); + onWillUpdateProps((nextProps) => refresh(nextProps.figureId)); }, - filterChartTypes(isOdoo) { - var result = {}; - for (const key of chartRegistry.getKeys()) { - if ((isOdoo && isOdooKey(key)) || (!isOdoo && !isOdooKey(key))) { - result[key] = chartRegistry.get(key).name; + getChartTypes(isOdoo) { + const result = {}; + for (const key of chartSubtypeRegistry.getKeys()) { + if (isOdoo === isOdooKey(key)) { + result[key] = chartSubtypeRegistry.get(key).name; } } return result; }, onTypeChange(type) { - if (isOdooKey(this.getChartDefinition().type)) { - const definition = { - stacked: false, - verticalAxisPosition: "left", - ...this.env.model.getters.getChartDefinition(this.figureId), - type, - }; - this.env.model.dispatch("UPDATE_CHART", { - definition, - id: this.figureId, - sheetId: this.env.model.getters.getActiveSheetId(), - }); - } else { - super.onTypeChange(type); + const {env} = this; + const figureId = this.props.figureId; + const current = getFigureDefinition(env, figureId); + if (!isOdooKey(current.type)) { + return super.onTypeChange(type); } + const newChartInfo = chartSubtypeRegistry.get(type); + const definition = { + verticalAxisPosition: "left", + ...current, + ...newChartInfo.subtypeDefinition, + type: newChartInfo.chartType, + }; + env.model.dispatch("UPDATE_CHART", { + definition, + id: figureId, + sheetId: env.model.getters.getActiveSheetId(), + }); + this.closePopover(); + }, + filterCategoriesChartType(figureId) { + const {env} = this; + const definition = getFigureDefinition(env, figureId); + const isOdoo = isOdooKey(definition.type); + const registryItems = chartSubtypeRegistry + .getAll() + .filter((item) => isOdoo === isOdooKey(item.chartType)); + this.chartTypeByCategories = groupByCategory(registryItems); }, }); From 8bc1d41a896c8fceb24c0279f1835c27eec54f18 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 25 Feb 2026 10:30:41 +0000 Subject: [PATCH 213/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 20044d0d..1f4b2d52 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -102,6 +102,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -158,6 +164,12 @@ msgstr "" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -443,6 +455,12 @@ msgstr "" msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -587,6 +605,12 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -769,6 +793,24 @@ msgstr "" msgid "Stacked" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" From 73f98e23d3df1635a1b2514bcfccbf3119510fdf Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 25 Feb 2026 10:33:01 +0000 Subject: [PATCH 214/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 56c1beb0..2e48c04c 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:c8a74e3809101635545a0644d7a03bdb4c4707494a3ee713763e8c4b71a167ab + !! source digest: sha256:4b7714132ef1376e4af8b24408b5cc9f53f236a0e8de446427507c71c11a09de !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 80e58fa6..447aae78 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.2.0", + "version": "18.0.1.2.1", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index e4994893..cba2ebe7 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:c8a74e3809101635545a0644d7a03bdb4c4707494a3ee713763e8c4b71a167ab +!! source digest: sha256:4b7714132ef1376e4af8b24408b5cc9f53f236a0e8de446427507c71c11a09de !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From cae69e6b3f662ee568cba8035e2f09cceb3b7336 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 25 Feb 2026 10:33:10 +0000 Subject: [PATCH 215/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 42 +++++++++++++++++++++++ spreadsheet_oca/i18n/fr.po | 42 +++++++++++++++++++++++ spreadsheet_oca/i18n/fr_FR.po | 42 +++++++++++++++++++++++ spreadsheet_oca/i18n/it.po | 63 +++++++++++++++++++++++------------ spreadsheet_oca/i18n/nl.po | 42 +++++++++++++++++++++++ spreadsheet_oca/i18n/pt.po | 42 +++++++++++++++++++++++ spreadsheet_oca/i18n/zh_CN.po | 42 +++++++++++++++++++++++ 7 files changed, 294 insertions(+), 21 deletions(-) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index 1c714dd7..c48ab2cd 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -106,6 +106,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -162,6 +168,12 @@ msgstr "Código" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -447,6 +459,12 @@ msgstr "Última actualización el" msgid "Last updated at" msgstr "Última Actualización el" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -591,6 +609,12 @@ msgstr "Propietario" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -773,6 +797,24 @@ msgstr "" msgid "Stacked" msgstr "Apilados" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index 6ec9aa07..cb6e1844 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -105,6 +105,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -161,6 +167,12 @@ msgstr "" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -446,6 +458,12 @@ msgstr "Dernière mise à jour le" msgid "Last updated at" msgstr "Dernière mise à jour à" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -590,6 +608,12 @@ msgstr "Propriétaire" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -772,6 +796,24 @@ msgstr "" msgid "Stacked" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 474db899..052e7bd4 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -103,6 +103,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -159,6 +165,12 @@ msgstr "" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -444,6 +456,12 @@ msgstr "" msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -588,6 +606,12 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -770,6 +794,24 @@ msgstr "" msgid "Stacked" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index d14aa2f1..cec224fb 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -105,6 +105,12 @@ msgstr "In archivio" msgid "Are you sure you want to delete this list?" msgstr "Si è sicuri di voler cancellare questo elenco?" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "Area" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -161,6 +167,12 @@ msgstr "Codice" msgid "Color" msgstr "Colore" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "Colonna" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -448,6 +460,12 @@ msgstr "Ultimo aggiornamento il" msgid "Last updated at" msgstr "Ultimo aggiornamento il" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "Riga" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -592,6 +610,12 @@ msgstr "Proprietario" msgid "Ownership" msgstr "Proprietà" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "Torta" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -774,6 +798,24 @@ msgstr "Immagine foglio di calcolo" msgid "Stacked" msgstr "In coda" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "Area riempita" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "Colonna riempita" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "Riga riempita" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" @@ -930,27 +972,6 @@ msgstr "gestione messaggio websocket" #~ msgid "Pivot name" #~ msgstr "Nome pivot" -#~ msgid "Area" -#~ msgstr "Area" - -#~ msgid "Column" -#~ msgstr "Colonna" - -#~ msgid "Line" -#~ msgstr "Riga" - -#~ msgid "Pie" -#~ msgstr "Torta" - -#~ msgid "Stacked Area" -#~ msgstr "Area riempita" - -#~ msgid "Stacked Column" -#~ msgstr "Colonna riempita" - -#~ msgid "Stacked Line" -#~ msgstr "Riga riempita" - #~ msgid "Add sheet to spreadsheet" #~ msgstr "Aggiungi scheda a foglIo di calcolo" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index 271e1b8b..df275066 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -105,6 +105,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -161,6 +167,12 @@ msgstr "" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -446,6 +458,12 @@ msgstr "Laatst bijgewerkt op" msgid "Last updated at" msgstr "Laatst bijgewerkt op" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -590,6 +608,12 @@ msgstr "Eigenaar" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -772,6 +796,24 @@ msgstr "" msgid "Stacked" msgstr "Gestapeld" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 3c1ddeb5..d963f461 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -105,6 +105,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -161,6 +167,12 @@ msgstr "Código" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -446,6 +458,12 @@ msgstr "Última Actualização em" msgid "Last updated at" msgstr "Última Modificação a" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -590,6 +608,12 @@ msgstr "Dono" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -772,6 +796,24 @@ msgstr "" msgid "Stacked" msgstr "Empilhados" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index f65d4138..b63dccd7 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -103,6 +103,12 @@ msgstr "" msgid "Are you sure you want to delete this list?" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Area" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count msgid "Attachment Count" @@ -159,6 +165,12 @@ msgstr "" msgid "Color" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Column" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -444,6 +456,12 @@ msgstr "" msgid "Last updated at" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Line" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -588,6 +606,12 @@ msgstr "" msgid "Ownership" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Pie" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -770,6 +794,24 @@ msgstr "" msgid "Stacked" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Area" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Column" +msgstr "" + +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Stacked Line" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state msgid "" From c72d6eafe2335ffc601b4f99c7a88fb49de8059f Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 25 Feb 2026 14:13:07 +0000 Subject: [PATCH 216/235] Translated using Weblate (Italian) Currently translated at 100.0% (160 of 160 strings) Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/it/ --- spreadsheet_oca/i18n/it.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index cec224fb..1f27e635 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-12-17 12:42+0000\n" +"PO-Revision-Date: 2026-02-25 17:09+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10.4\n" +"X-Generator: Weblate 5.15.2\n" #. module: spreadsheet_oca #: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq @@ -632,13 +632,13 @@ msgstr "Trimestre" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 msgid "Re-insert Dynamic" -msgstr "" +msgstr "Reinserisci dinamico" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 msgid "Re-insert Static" -msgstr "" +msgstr "Reinserisci statico" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view From f196cd58c7dad7f845b5da677ef50a5d1220b043 Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Mon, 2 Mar 2026 09:08:12 +0100 Subject: [PATCH 217/235] [FIX] spreadsheet_oca: Take care about variables on domain This commit fixes the problem reported in this issue: https://github.com/OCA/spreadsheet/issues/96 Before these changes, the domain was taking the processed domain value, so it was using the value for the logged-in user. For example, if the uid variable was used, it was replaced with the user's ID and thus passed that way to the spreadsheet domains. After these changes, the domain sent to the spreadsheet is the unprocessed domain, so the variables are preserved and remain fully usable. --- .../spreadsheet/bundle/filter_panel_datasources.esm.js | 2 +- .../static/src/spreadsheet/graph_controller.esm.js | 9 +++++---- .../static/src/spreadsheet/list_renderer.esm.js | 2 +- .../static/src/spreadsheet/pivot_controller.esm.js | 9 +++++---- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index 4a2a0eda..3d6c4866 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -120,7 +120,7 @@ export class PivotPanelDisplay extends Component { editDomain() { this.dialog.add(DomainSelectorDialog, { resModel: this.store.definition.model, - domain: this.store.definition.domain, + domain: this.domain, readonly: false, isDebugMode: Boolean(this.env.debug), onConfirm: this.onSelectDomain.bind(this), diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js index 04238fa6..4fe34251 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js @@ -12,10 +12,11 @@ patch(GraphRenderer.prototype, { default_datasource_name: this.model.metaData.title, default_import_data: { mode: "graph", - metaData: JSON.parse(JSON.stringify(this.model.metaData)), - searchParams: JSON.parse( - JSON.stringify(this.model.searchParams) - ), + metaData: this.model.metaData, + searchParams: { + ...this.model.searchParams, + domain: this.env.searchModel.domainString, + }, }, }, } diff --git a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js index beccbe38..9ead5d58 100644 --- a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js @@ -32,7 +32,7 @@ patch(ListRenderer.prototype, { mode: "list", metaData: { model: model.resModel, - domain: model.domain, + domain: this.env.searchModel.domainString, orderBy: model.orderBy, context: omit( model.searchParams?.context || {}, diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js index 101544c9..54e68e6f 100644 --- a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js @@ -54,10 +54,11 @@ patch(PivotRenderer.prototype, { default_can_be_dynamic: false, default_import_data: { mode: "pivot", - metaData: JSON.parse(JSON.stringify(this.model.metaData)), - searchParams: JSON.parse( - JSON.stringify(this.model.searchParams) - ), + metaData: this.model.metaData, + searchParams: { + ...this.model.searchParams, + domain: this.env.searchModel.domainString, + }, }, }, } From 5ca2b78f52675bce7a129decd610a29b884d6972 Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Wed, 25 Feb 2026 12:28:52 +0100 Subject: [PATCH 218/235] [FIX] spreadsheet_oca: Error linking chart to Odoo menu Steps to reproduce the error: 1. Set debug=assets 2. Add a chart to spreadsheet 3. In "Link to Odoo menu" section select a record An error will be thrown --- .../static/src/spreadsheet/bundle/chart_panels.esm.js | 10 +++------- .../static/src/spreadsheet/bundle/odoo_panels.esm.js | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js index 2142fa57..7f1977ff 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js @@ -19,19 +19,15 @@ const menuChartProps = () => ({ this.menus = useService("menu"); }, get menuProps() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - var result = { + return { fieldString: _t("Menu Items"), resModel: "ir.ui.menu", update: this.updateMenu.bind(this), activeActions: {}, getDomain: this.getDomain.bind(this), + placeholder: _t("Select a menu..."), + value: this.menuId ? this.menuId[1] : "", }; - if (menu) { - result.value = menu.name; - result.id = menu.id; - } - return result; }, getDomain() { diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index dfbe770a..767c0143 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -14,19 +14,15 @@ export class OdooPanel extends Component { this.menus = useService("menu"); } get menuProps() { - const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); - var result = { + return { fieldString: _t("Menu Items"), resModel: "ir.ui.menu", update: this.updateMenu.bind(this), activeActions: {}, getDomain: this.getDomain.bind(this), + placeholder: _t("Select a menu..."), + value: this.menuId ? this.menuId[1] : "", }; - if (menu) { - result.value = menu.name; - result.id = menu.id; - } - return result; } getDomain() { const menus = this.menus From 4e2d89467bfe889c8993bdef1a6f3b33c36f1fea Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 2 Mar 2026 19:07:17 +0000 Subject: [PATCH 219/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index 1f4b2d52..bdd92041 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -697,6 +697,13 @@ msgstr "" msgid "Save" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" From e470eb6ed826a950f316a8ea20d8a8553c003061 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 2 Mar 2026 19:09:35 +0000 Subject: [PATCH 220/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 2e48c04c..559fd585 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:4b7714132ef1376e4af8b24408b5cc9f53f236a0e8de446427507c71c11a09de + !! source digest: sha256:ad9a44dccad9feb67b1967b0ff5ce98f777ceb5c2bcff5fc84cc5fd1ff3056a8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 447aae78..40642cce 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.2.1", + "version": "18.0.1.2.2", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index cba2ebe7..27a7cc16 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:4b7714132ef1376e4af8b24408b5cc9f53f236a0e8de446427507c71c11a09de +!! source digest: sha256:ad9a44dccad9feb67b1967b0ff5ce98f777ceb5c2bcff5fc84cc5fd1ff3056a8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From b751463eec6cc1c20213e5459bfd107de59045df Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 2 Mar 2026 19:09:44 +0000 Subject: [PATCH 221/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 7 +++++++ spreadsheet_oca/i18n/fr.po | 7 +++++++ spreadsheet_oca/i18n/fr_FR.po | 7 +++++++ spreadsheet_oca/i18n/it.po | 7 +++++++ spreadsheet_oca/i18n/nl.po | 7 +++++++ spreadsheet_oca/i18n/pt.po | 7 +++++++ spreadsheet_oca/i18n/zh_CN.po | 7 +++++++ 7 files changed, 49 insertions(+) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index c48ab2cd..25aa7e07 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -701,6 +701,13 @@ msgstr "" msgid "Save" msgstr "Guardar" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index cb6e1844..e5d1f502 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -700,6 +700,13 @@ msgstr "" msgid "Save" msgstr "Enregistrer" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 052e7bd4..44885cc7 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -698,6 +698,13 @@ msgstr "" msgid "Save" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 1f27e635..0812e3cf 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -702,6 +702,13 @@ msgstr "Righe:" msgid "Save" msgstr "Salva" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index df275066..808707ad 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -700,6 +700,13 @@ msgstr "" msgid "Save" msgstr "Opslaan" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index d963f461..60afb816 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -700,6 +700,13 @@ msgstr "" msgid "Save" msgstr "Guardar" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index b63dccd7..1907403a 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -698,6 +698,13 @@ msgstr "" msgid "Save" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Select a menu..." +msgstr "" + #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" From 414cdbcf9ca2f7b6a228701636ebe9b70b0eca73 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 3 Mar 2026 07:58:45 +0000 Subject: [PATCH 222/235] Translated using Weblate (Italian) Currently translated at 100.0% (161 of 161 strings) Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/it/ --- spreadsheet_oca/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 0812e3cf..8e1049f5 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-02-25 17:09+0000\n" +"PO-Revision-Date: 2026-03-03 10:45+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -707,7 +707,7 @@ msgstr "Salva" #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 msgid "Select a menu..." -msgstr "" +msgstr "Selezionare un menu..." #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number From dd73fa71746393848e4016cb668d6eaa36757a68 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 3 Mar 2026 13:57:42 +0000 Subject: [PATCH 223/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 559fd585..5babde5d 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:ad9a44dccad9feb67b1967b0ff5ce98f777ceb5c2bcff5fc84cc5fd1ff3056a8 + !! source digest: sha256:e2538062948707da20c2cc2aa0016f74cd1bf35985858388eef1c9750a1a9f62 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 40642cce..be5be297 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.2.2", + "version": "18.0.1.2.3", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 27a7cc16..69ccb105 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:ad9a44dccad9feb67b1967b0ff5ce98f777ceb5c2bcff5fc84cc5fd1ff3056a8 +!! source digest: sha256:e2538062948707da20c2cc2aa0016f74cd1bf35985858388eef1c9750a1a9f62 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From be7bc95876d3a5d0cd2b7cf18f684ffad6270388 Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Tue, 24 Mar 2026 08:14:23 +0100 Subject: [PATCH 224/235] [FIX] spreadsheet_oca: Error thrown when pivot is sorted When a pivot has a sort defined and the data of the pivot is opened an error is thrown because the data is not processed correctly. By doing this changes, we adapt the code to the new way of process the pivot data and the error does not being thrown anymore. --- .../bundle/filter_panel_datasources.esm.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index 3d6c4866..a8081f6b 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -101,13 +101,10 @@ export class PivotPanelDisplay extends Component { const sortedColumn = this.store.definition.sortedColumn; const orderTranslate = sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); - let label = null; - if (sortedColumn.measure) { - const measure = this.PivotDataSource.getMeasure(sortedColumn.measure); - label = measure ? measure.displayName : sortedColumn.measure; - } else if (sortedColumn.groupBy) { - label = this.PivotDataSource.getFormattedGroupBy(sortedColumn.groupBy); - } + const measure = this.store.definition.measures.find( + (m) => m.fieldName === sortedColumn.measure + ); + const label = this.PivotDataSource.getMeasure(measure.id).displayName; return `${label} (${orderTranslate})`; } get lastUpdate() { From 592862f126ff0ec1d4c241bcd7578b4d2a16bed2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 24 Mar 2026 10:57:28 +0000 Subject: [PATCH 225/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 5babde5d..d2edf6a8 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:e2538062948707da20c2cc2aa0016f74cd1bf35985858388eef1c9750a1a9f62 + !! source digest: sha256:e1b1dcc71a503891f65b9c9523ef165e3354a691bc8e0e42c1a99623717324d2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index be5be297..5148e576 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.2.3", + "version": "18.0.1.2.4", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 69ccb105..83a78d8e 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:e2538062948707da20c2cc2aa0016f74cd1bf35985858388eef1c9750a1a9f62 +!! source digest: sha256:e1b1dcc71a503891f65b9c9523ef165e3354a691bc8e0e42c1a99623717324d2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From c25d4451f7fe3867ffa1ea0719c9b167752d0131 Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Thu, 26 Mar 2026 12:09:32 +0100 Subject: [PATCH 226/235] [IMP] spreadsheet_oca: Add new features to relation filters With this changes we are adding: 1. Include children records when it is possible 2. Add default values for the filter 3. If the model is for users allow set the current user by default 4. Allow to restrict values with a domain --- spreadsheet_oca/models/__init__.py | 1 + spreadsheet_oca/models/ir_model.py | 16 ++++ .../src/spreadsheet/bundle/filter.esm.js | 94 ++++++++++++++++--- .../src/spreadsheet/bundle/spreadsheet.xml | 78 +++++++++++++-- 4 files changed, 166 insertions(+), 23 deletions(-) create mode 100644 spreadsheet_oca/models/ir_model.py diff --git a/spreadsheet_oca/models/__init__.py b/spreadsheet_oca/models/__init__.py index c5ec2360..3e07c12a 100644 --- a/spreadsheet_oca/models/__init__.py +++ b/spreadsheet_oca/models/__init__.py @@ -1,3 +1,4 @@ +from . import ir_model from . import spreadsheet_abstract from . import spreadsheet_spreadsheet_tag from . import spreadsheet_spreadsheet diff --git a/spreadsheet_oca/models/ir_model.py b/spreadsheet_oca/models/ir_model.py new file mode 100644 index 00000000..78b452d4 --- /dev/null +++ b/spreadsheet_oca/models/ir_model.py @@ -0,0 +1,16 @@ +# Copyright 2026 Tecnativa - Carlos Roca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class IrModel(models.Model): + _inherit = "ir.model" + + @api.model + def has_parent_relation(self, model_name): + """Return if the model has a parent relation.""" + model = self.env.get(model_name) + if model is None or not model.has_access("read"): + return False + return model._parent_name in model._fields diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index a5fabc63..799faf37 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -1,10 +1,15 @@ import * as spreadsheet from "@odoo/o-spreadsheet"; import {Component, onWillStart, useState} from "@odoo/owl"; - +import {Domain} from "@web/core/domain"; +import {DomainSelector} from "@web/core/domain_selector/domain_selector"; +import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; import {ModelSelector} from "@web/core/model_selector/model_selector"; +import {MultiRecordSelector} from "@web/core/record_selectors/multi_record_selector"; import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; +const {Checkbox} = spreadsheet.components; +import {user} from "@web/core/user"; import {_t} from "@web/core/l10n/translation"; import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; @@ -63,25 +68,42 @@ sidePanelRegistry.add("FilterPanel", { export class EditFilterPanel extends Component { setup() { - this.filterId = this.props.filter; + this.filterId = this.props.filter.id; this.orm = useService("orm"); + this.nameService = useService("name"); + this.dialog = useService("dialog"); this.state = useState({ label: this.props.filter.label, type: this.props.filter.type, - defaultValue: this.props.filter.defaultValue, + defaultValue: this.props.filter.defaultValue || [], + defaultValueDisplayNames: this.props.filter.defaultValueDisplayNames || [], rangeType: this.props.filter.rangeType || "year", - modelName: {technical: this.props.filter.modelName, label: null}, + modelData: {technical: this.props.filter.modelName, label: null}, objects: {}, + includeChildren: this.props.filter.includeChildren, + domainOfAllowedValues: this.props.filter.domainOfAllowedValues, + valuesRestricted: Boolean(this.props.filter.domainOfAllowedValues?.length), }); this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; onWillStart(this.willStart.bind(this)); } async willStart() { - if (this.state.modelName.technical !== undefined) { + if (this.state.modelData.technical !== undefined) { + const technicalName = this.state.modelData.technical; const modelLabel = await this.orm.call("ir.model", "display_name_for", [ - [this.state.modelName.technical], + [technicalName], ]); - this.state.modelName.label = modelLabel[0] && modelLabel[0].display_name; + this.state.modelData.label = modelLabel[0] && modelLabel[0].display_name; + if (this.state.includeChildren) { + this.state.modelData.hasParentRelation = true; + } else { + const hasParentRelation = await this.orm.call( + "ir.model", + "has_parent_relation", + [technicalName] + ); + this.state.modelData.hasParentRelation = hasParentRelation; + } } var ModelFields = []; for (var [objectType, objectClass] of Object.entries( @@ -132,9 +154,46 @@ export class EditFilterPanel extends Component { onChangeFieldMatchOffset(object, ev) { this.state.objects[object.id].fieldMatch.offset = parseInt(ev.target.value, 10); } - onModelSelected(ev) { - this.state.modelName.technical = ev.technical; - this.state.modelName.label = ev.label; + async onModelSelected(ev) { + this.state.modelData.technical = ev.technical; + this.state.modelData.label = ev.label; + this.state.modelData.hasParentRelation = await this.orm.call( + "ir.model", + "has_parent_relation", + [ev.technical] + ); + this.state.domainOfAllowedValues = []; + } + async onRecordsSelected(resIds) { + const defaultValueDisplayNames = await this.nameService.loadDisplayNames( + this.state.modelData.technical, + resIds + ); + this.state.defaultValue = resIds; + this.state.defaultValueDisplayNames = Object.values(defaultValueDisplayNames); + } + onUpdateDomain(domain) { + this.state.domainOfAllowedValues = domain; + } + getCorrectDomain() { + const domain = this.state.domainOfAllowedValues; + if (domain) { + return new Domain(domain).toList(user.context); + } + return []; + } + changeDomainRestriction(value) { + this.state.valuesRestricted = value; + this.state.domainOfAllowedValues = []; + } + editDomain() { + this.dialog.add(DomainSelectorDialog, { + resModel: this.state.modelData.technical, + domain: this.getCorrectDomain(), + readonly: false, + isDebugMode: Boolean(this.env.debug), + onConfirm: this.onUpdateDomain.bind(this), + }); } onDateRangeChange(ev) { this.state.rangeType = ev.target.value; @@ -148,10 +207,13 @@ export class EditFilterPanel extends Component { const filter = { id: this.props.filter.id || uuidGenerator.uuidv4(), type: this.state.type, - label: this.state.label, + label: this.state.label || "", defaultValue: this.state.defaultValue, + defaultValueDisplayNames: this.state.defaultValueDisplayNames, rangeType: this.state.rangeType, - modelName: this.state.modelName.technical, + modelName: this.state.modelData.technical, + includeChildren: this.state.includeChildren, + domainOfAllowedValues: this.state.domainOfAllowedValues, }; const filterMatching = {}; Object.values(this.state.objects).forEach((object) => { @@ -227,7 +289,13 @@ export class EditFilterPanel extends Component { } EditFilterPanel.template = "spreadsheet_oca.EditFilterPanel"; -EditFilterPanel.components = {ModelSelector, ModelFieldSelector}; +EditFilterPanel.components = { + Checkbox, + DomainSelector, + ModelSelector, + ModelFieldSelector, + MultiRecordSelector, +}; sidePanelRegistry.add("EditFilterPanel", { title: "Edit Filter", diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index bd90b950..40110bcd 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -243,17 +243,75 @@ t-model="state.defaultValue" />

- -
-
Related model
-
- +
+
Related model
+
+ +
+
-
+ +
+
Default value
+
+ +
+
+ +
+
+
+
Possible values
+
+ +
+ + + + +
+
+
-
+
From 4e54eebd13980fae01cf0ddd78fc6322b79a839b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 26 Mar 2026 16:18:36 +0000 Subject: [PATCH 227/235] [UPD] Update spreadsheet_oca.pot --- spreadsheet_oca/i18n/spreadsheet_oca.pot | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index bdd92041..e5a89eaa 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -119,6 +119,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -407,6 +413,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -507,6 +519,11 @@ msgstr "" msgid "Model" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -611,6 +628,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -684,6 +707,12 @@ msgstr "" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 From 7216376869d93c2312aa8fc2c0f5472602cc41b3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 26 Mar 2026 16:21:06 +0000 Subject: [PATCH 228/235] [BOT] post-merge updates --- spreadsheet_oca/README.rst | 2 +- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index d2edf6a8..3f2808b9 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:e1b1dcc71a503891f65b9c9523ef165e3354a691bc8e0e42c1a99623717324d2 + !! source digest: sha256:afa8556b48ef425ac88f6fa7b69a9f5d76aaef94958f9ce0e14e0efd97024dc0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 5148e576..782aaeb7 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.2.4", + "version": "18.0.1.3.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 83a78d8e..877f077a 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

Spreadsheet Oca

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:e1b1dcc71a503891f65b9c9523ef165e3354a691bc8e0e42c1a99623717324d2 +!! source digest: sha256:afa8556b48ef425ac88f6fa7b69a9f5d76aaef94958f9ce0e14e0efd97024dc0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets From 5772e7840001f1101b94952b72a6ce29fe64eae2 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 26 Mar 2026 16:21:16 +0000 Subject: [PATCH 229/235] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: spreadsheet-18.0/spreadsheet-18.0-spreadsheet_oca Translate-URL: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca/ --- spreadsheet_oca/i18n/es.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/fr.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/fr_FR.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/it.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/nl.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/pt.po | 29 +++++++++++++++++++++++++++++ spreadsheet_oca/i18n/zh_CN.po | 29 +++++++++++++++++++++++++++++ 7 files changed, 203 insertions(+) diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index 25aa7e07..43fe0eb4 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -123,6 +123,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "Filtrar automáticamente en el período actual" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -411,6 +417,12 @@ msgstr "Importar Pivot" msgid "Import data to spreadsheet" msgstr "Importar datos a hoja de cálculo" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -511,6 +523,11 @@ msgstr "Modo" msgid "Model" msgstr "Modelo" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -615,6 +632,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -688,6 +711,12 @@ msgstr "Res" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index e5d1f502..1fb8857f 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -122,6 +122,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -410,6 +416,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "Importer des données au tableur" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -510,6 +522,11 @@ msgstr "" msgid "Model" msgstr "Modèle" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -614,6 +631,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -687,6 +710,12 @@ msgstr "" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 44885cc7..9db7709b 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -120,6 +120,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -408,6 +414,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -508,6 +520,11 @@ msgstr "" msgid "Model" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -612,6 +629,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -685,6 +708,12 @@ msgstr "" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 8e1049f5..0ad3a5a9 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -122,6 +122,12 @@ msgstr "Conteggio allegati" msgid "Automatically filter on the current period" msgstr "Filtra automaticamente sul periodo attuale" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -412,6 +418,12 @@ msgstr "Importa pivot" msgid "Import data to spreadsheet" msgstr "Importa dati nel foglio di calcolo" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -512,6 +524,11 @@ msgstr "Modo" msgid "Model" msgstr "Modello" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -616,6 +633,12 @@ msgstr "Proprietà" msgid "Pie" msgstr "Torta" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -689,6 +712,12 @@ msgstr "Res" msgid "Responsible User" msgstr "Utente responsabile" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index 808707ad..c87814ca 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -122,6 +122,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "Automatisch filteren op de huidige periode" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -410,6 +416,12 @@ msgstr "Importeer draaipunt" msgid "Import data to spreadsheet" msgstr "Gegevens importeren naar spreadsheet" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -510,6 +522,11 @@ msgstr "" msgid "Model" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -614,6 +631,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -687,6 +710,12 @@ msgstr "" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 60afb816..4ac81b98 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -122,6 +122,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "Filtrar automaticamente no período atual" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -410,6 +416,12 @@ msgstr "Importar Pivô" msgid "Import data to spreadsheet" msgstr "Importar dados para a folha de cálculo" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -510,6 +522,11 @@ msgstr "Modo" msgid "Model" msgstr "Modelo" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -614,6 +631,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -687,6 +710,12 @@ msgstr "Res" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index 1907403a..ed29c542 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -120,6 +120,12 @@ msgstr "" msgid "Automatically filter on the current period" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Automatically filter on the current user" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image msgid "Badge Background" @@ -408,6 +414,12 @@ msgstr "" msgid "Import data to spreadsheet" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Include children" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -508,6 +520,11 @@ msgstr "" msgid "Model" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model,name:spreadsheet_oca.model_ir_model +msgid "Models" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -612,6 +629,12 @@ msgstr "" msgid "Pie" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Possible values" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -685,6 +708,12 @@ msgstr "" msgid "Responsible User" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Restrict values with a domain" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 From 23118edf73a7743b85c0c37f5b5b69d46cbe1075 Mon Sep 17 00:00:00 2001 From: Michael Piko Date: Sun, 29 Mar 2026 06:22:16 +1100 Subject: [PATCH 230/235] [IMP] spreadsheet_oca, spreadsheet_dashboard_oca: pre-commit auto fixes --- spreadsheet_dashboard_oca/README.rst | 10 +++++----- spreadsheet_dashboard_oca/__manifest__.py | 2 +- .../models/spreadsheet_dashboard.py | 6 +++--- .../static/description/index.html | 6 +++--- spreadsheet_oca/README.rst | 16 ++++++++-------- spreadsheet_oca/__manifest__.py | 2 +- spreadsheet_oca/models/spreadsheet_abstract.py | 4 ++-- .../models/spreadsheet_spreadsheet.py | 4 ++-- .../models/spreadsheet_spreadsheet_tag.py | 2 +- spreadsheet_oca/static/description/index.html | 12 ++++++------ 10 files changed, 32 insertions(+), 32 deletions(-) diff --git a/spreadsheet_dashboard_oca/README.rst b/spreadsheet_dashboard_oca/README.rst index e5cf0ed4..5ccde468 100644 --- a/spreadsheet_dashboard_oca/README.rst +++ b/spreadsheet_dashboard_oca/README.rst @@ -21,13 +21,13 @@ Spreadsheet Dashboard Oca :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github - :target: https://github.com/OCA/spreadsheet/tree/18.0/spreadsheet_dashboard_oca + :target: https://github.com/OCA/spreadsheet/tree/19.0/spreadsheet_dashboard_oca :alt: OCA/spreadsheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_dashboard_oca + :target: https://translation.odoo-community.org/projects/spreadsheet-19-0/spreadsheet-19-0-spreadsheet_dashboard_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -46,7 +46,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -83,6 +83,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/spreadsheet `_ project on GitHub. +This module is part of the `OCA/spreadsheet `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/spreadsheet_dashboard_oca/__manifest__.py b/spreadsheet_dashboard_oca/__manifest__.py index f9ddc16d..dd93ae2d 100644 --- a/spreadsheet_dashboard_oca/__manifest__.py +++ b/spreadsheet_dashboard_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Dashboard Oca", "summary": """ Use OCA Spreadsheets on dashboards configuration""", - "version": "18.0.1.1.0", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py b/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py index fa1a492c..49e51bf8 100644 --- a/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py +++ b/spreadsheet_dashboard_oca/models/spreadsheet_dashboard.py @@ -1,7 +1,7 @@ # Copyright 2022 CreuBlanca # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import _, api, fields, models +from odoo import api, fields, models from odoo.exceptions import ValidationError @@ -25,9 +25,9 @@ def _compute_can_edit(self): @api.model def _search_can_edit(self, operator, value): if operator != "=": - raise NotImplementedError(_("Search operation not supported")) + raise NotImplementedError(self.env._("Search operation not supported")) if not isinstance(value, bool): - raise ValidationError(_("The value has to be a boolean")) + raise ValidationError(self.env._("The value has to be a boolean")) no_edit_ids = ( self.env["ir.model.data"] .search( diff --git a/spreadsheet_dashboard_oca/static/description/index.html b/spreadsheet_dashboard_oca/static/description/index.html index 6e9a9339..2d1f63c8 100644 --- a/spreadsheet_dashboard_oca/static/description/index.html +++ b/spreadsheet_dashboard_oca/static/description/index.html @@ -374,7 +374,7 @@

Spreadsheet Dashboard Oca

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:f2dd89e0742dd92768f13deebfcf0df75b55119ebe65a1c534295ed2382eee01 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module allows to edit spreadsheet dashboards using OCA Spreadsheet editor.

Table of contents

@@ -394,7 +394,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -428,7 +428,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/spreadsheet project on GitHub.

+

This module is part of the OCA/spreadsheet project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 3f2808b9..634f9720 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -21,13 +21,13 @@ Spreadsheet Oca :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fspreadsheet-lightgray.png?logo=github - :target: https://github.com/OCA/spreadsheet/tree/18.0/spreadsheet_oca + :target: https://github.com/OCA/spreadsheet/tree/19.0/spreadsheet_oca :alt: OCA/spreadsheet .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/spreadsheet-18-0/spreadsheet-18-0-spreadsheet_oca + :target: https://translation.odoo-community.org/projects/spreadsheet-19-0/spreadsheet-19-0-spreadsheet_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/spreadsheet&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -88,9 +88,9 @@ Usage of ``account.account`` model. (``income``, ``asset_receivable``, etc.) -.. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/spreadsheet_create.png -.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/spreadsheet_edit.png -.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/18.0/spreadsheet_oca/static/description/o-spreadsheet.png +.. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/spreadsheet_create.png +.. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/spreadsheet_edit.png +.. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/o-spreadsheet.png Development =========== @@ -105,7 +105,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -146,6 +146,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/spreadsheet `_ project on GitHub. +This module is part of the `OCA/spreadsheet `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 782aaeb7..743f5f4e 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "18.0.1.3.0", + "version": "19.0.1.0.0", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", diff --git a/spreadsheet_oca/models/spreadsheet_abstract.py b/spreadsheet_oca/models/spreadsheet_abstract.py index 86a1e317..245d393c 100644 --- a/spreadsheet_oca/models/spreadsheet_abstract.py +++ b/spreadsheet_oca/models/spreadsheet_abstract.py @@ -5,7 +5,7 @@ import json from typing import Any -from odoo import _, api, fields, models +from odoo import api, fields, models from odoo.exceptions import AccessError CollaborationMessage = dict[str, Any] @@ -68,7 +68,7 @@ def _empty_spreadsheet_data(self): "sheets": [ { "id": "sheet1", - "name": _("Sheet1"), + "name": self.env._("Sheet1"), } ], "settings": { diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet.py b/spreadsheet_oca/models/spreadsheet_spreadsheet.py index 55a9ae9f..3b75803a 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet.py @@ -5,7 +5,7 @@ import zipfile from io import BytesIO -from odoo import _, api, fields, models +from odoo import api, fields, models class SpreadsheetSpreadsheet(models.Model): @@ -59,7 +59,7 @@ class SpreadsheetSpreadsheet(models.Model): @api.depends("name") def _compute_filename(self): for record in self: - record.filename = "%s.json" % (self.name or _("Unnamed")) + record.filename = "%s.json" % (self.name or self.env._("Unnamed")) def create_document_from_attachment(self, attachment_ids): attachments = self.env["ir.attachment"].browse(attachment_ids) diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py index 29fc9593..3c594031 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py @@ -15,7 +15,7 @@ def _get_default_color(self): name = fields.Char(required=True, translate=True) color = fields.Integer( - default=_get_default_color, + default=lambda self: self._get_default_color(), help="Transparent tags are not visible in the kanban view", ) diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index 877f077a..b15a6ee8 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -374,7 +374,7 @@

Spreadsheet Oca

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:afa8556b48ef425ac88f6fa7b69a9f5d76aaef94958f9ce0e14e0efd97024dc0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

This module adds a functionality for adding and editing Spreadsheets using Odoo CE.

It is an alternative to the proprietary module spreadsheet_edition @@ -405,13 +405,13 @@

Create a new spreadsheet<
  • Click on ‘Create’
  • Put a name, then click on the “Edit” button
  • -

    image1

    +

    image1

    • At this point you switch to spreadsheet editing mode. The editor is named o-spreadsheet and looks like another common spreadsheet web editors. (OnlyOffice, Ethercalc, Google Sheets (non-free)).
    -

    image2

    +

    image2

    -

    image3

    +

    image3

    • Note: Business Odoo module can add “business functions”. This is currently the case for the accounting module, which adds the following @@ -457,7 +457,7 @@

      Bug Tracker

      Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

      +feedback.

      Do not contact contributors directly about support or help with technical issues.

    @@ -495,7 +495,7 @@

    Maintainers

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    -

    This module is part of the OCA/spreadsheet project on GitHub.

    +

    This module is part of the OCA/spreadsheet project on GitHub.

    You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

    From 3f651a72cc4e4dfbb86859bbfac198925f71b1fc Mon Sep 17 00:00:00 2001 From: Michael Piko Date: Sun, 29 Mar 2026 06:25:29 +1100 Subject: [PATCH 231/235] [MIG] spreadsheet_oca, spreadsheet_dashboard_oca: Migration to 19.0 --- .../models/spreadsheet_abstract.py | 1 - .../models/spreadsheet_spreadsheet.py | 7 +- spreadsheet_oca/security/security.xml | 12 +- .../src/spreadsheet/bundle/filter.esm.js | 139 ++++----------- .../bundle/filter_panel_datasources.esm.js | 151 +++++++++-------- .../src/spreadsheet/bundle/odoo_panels.esm.js | 78 +-------- .../bundle/spreadsheet_action.esm.js | 26 ++- .../bundle/spreadsheet_renderer.esm.js | 4 +- .../views/spreadsheet_spreadsheet.xml | 160 +----------------- 9 files changed, 159 insertions(+), 419 deletions(-) diff --git a/spreadsheet_oca/models/spreadsheet_abstract.py b/spreadsheet_oca/models/spreadsheet_abstract.py index 245d393c..968e5562 100644 --- a/spreadsheet_oca/models/spreadsheet_abstract.py +++ b/spreadsheet_oca/models/spreadsheet_abstract.py @@ -17,7 +17,6 @@ class SpreadsheetAbstract(models.AbstractModel): _inherit = ["bus.listener.mixin"] name = fields.Char(required=True) - active = fields.Boolean(default=True) spreadsheet_binary_data = fields.Binary( string="Spreadsheet file", default=lambda self: self._empty_spreadsheet_data_base64(), diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet.py b/spreadsheet_oca/models/spreadsheet_spreadsheet.py index 3b75803a..68b75d80 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet.py @@ -10,11 +10,10 @@ class SpreadsheetSpreadsheet(models.Model): _name = "spreadsheet.spreadsheet" - _inherit = ["spreadsheet.abstract", "mail.thread", "mail.activity.mixin"] + _inherit = "spreadsheet.abstract" _description = "Spreadsheet" filename = fields.Char(compute="_compute_filename") - badge_image = fields.Image("Badge Background", max_width=1024, max_height=1024) owner_id = fields.Many2one( "res.users", required=True, default=lambda r: r.env.user.id ) @@ -52,10 +51,6 @@ class SpreadsheetSpreadsheet(models.Model): " if this company is in the current companies.", ) - spreadsheet_tag_ids = fields.Many2many( - string="Tags", comodel_name="spreadsheet.spreadsheet.tag" - ) - @api.depends("name") def _compute_filename(self): for record in self: diff --git a/spreadsheet_oca/security/security.xml b/spreadsheet_oca/security/security.xml index aa94100a..0f79410f 100644 --- a/spreadsheet_oca/security/security.xml +++ b/spreadsheet_oca/security/security.xml @@ -8,16 +8,10 @@ User - Manager - - Spreadsheet Company Rule @@ -36,7 +30,7 @@ ['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.groups_id.ids)] + >['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.group_ids.ids)] @@ -46,7 +40,7 @@ ['|', ('reader_ids','=', user.id), ('reader_group_ids','in', user.groups_id.ids)] + >['|', ('reader_ids','=', user.id), ('reader_group_ids','in', user.group_ids.ids)] @@ -60,6 +54,6 @@ Spreadsheet Import mode - [('group_ids','in', user.groups_id.ids)] + [('group_ids','in', user.group_ids.ids)] diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index 799faf37..5cb7daa5 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -1,24 +1,19 @@ import * as spreadsheet from "@odoo/o-spreadsheet"; import {Component, onWillStart, useState} from "@odoo/owl"; -import {Domain} from "@web/core/domain"; -import {DomainSelector} from "@web/core/domain_selector/domain_selector"; -import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; + import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; import {ModelSelector} from "@web/core/model_selector/model_selector"; -import {MultiRecordSelector} from "@web/core/record_selectors/multi_record_selector"; -import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; -const {Checkbox} = spreadsheet.components; -import {user} from "@web/core/user"; - import {_t} from "@web/core/l10n/translation"; -import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; +import { + RELATIVE_PERIODS, + globalFieldMatchingRegistry, +} from "@spreadsheet/global_filters/helpers"; import {useService} from "@web/core/utils/hooks"; const {topbarMenuRegistry} = spreadsheet.registries; const uuidGenerator = new spreadsheet.helpers.UuidGenerator(); -topbarMenuRegistry.add("file", {name: _t("File"), sequence: 10}); topbarMenuRegistry.addChild("filters", ["file"], { name: _t("Filters"), sequence: 70, @@ -27,7 +22,6 @@ topbarMenuRegistry.addChild("filters", ["file"], { }); topbarMenuRegistry.addChild("save", ["file"], { name: _t("Save"), - // Description: "Ctrl+S", // This is not working, so removing it from the view for now... sequence: 10, execute: (env) => env.saveSpreadsheet(), icon: "o-spreadsheet-Icon.DOWNLOAD", @@ -38,12 +32,6 @@ topbarMenuRegistry.addChild("download", ["file"], { execute: (env) => env.downloadAsXLXS(), icon: "o-spreadsheet-Icon.EXPORT_XLSX", }); -topbarMenuRegistry.addChild("settings", ["file"], { - name: _t("Settings"), - sequence: 100, - execute: (env) => env.openSidePanel("Settings"), - icon: "o-spreadsheet-Icon.COG", -}); const {sidePanelRegistry} = spreadsheet.registries; @@ -68,60 +56,46 @@ sidePanelRegistry.add("FilterPanel", { export class EditFilterPanel extends Component { setup() { - this.filterId = this.props.filter.id; + this.filterId = this.props.filter; this.orm = useService("orm"); - this.nameService = useService("name"); - this.dialog = useService("dialog"); this.state = useState({ label: this.props.filter.label, type: this.props.filter.type, - defaultValue: this.props.filter.defaultValue || [], - defaultValueDisplayNames: this.props.filter.defaultValueDisplayNames || [], + defaultValue: this.props.filter.defaultValue, rangeType: this.props.filter.rangeType || "year", - modelData: {technical: this.props.filter.modelName, label: null}, + modelName: {technical: this.props.filter.modelName, label: null}, objects: {}, - includeChildren: this.props.filter.includeChildren, - domainOfAllowedValues: this.props.filter.domainOfAllowedValues, - valuesRestricted: Boolean(this.props.filter.domainOfAllowedValues?.length), }); - this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; + this.relativeDateRangeTypes = RELATIVE_PERIODS; onWillStart(this.willStart.bind(this)); } async willStart() { - if (this.state.modelData.technical !== undefined) { - const technicalName = this.state.modelData.technical; + const getters = this.env.model.getters; + if (this.state.modelName.technical !== undefined) { const modelLabel = await this.orm.call("ir.model", "display_name_for", [ - [technicalName], + [this.state.modelName.technical], ]); - this.state.modelData.label = modelLabel[0] && modelLabel[0].display_name; - if (this.state.includeChildren) { - this.state.modelData.hasParentRelation = true; - } else { - const hasParentRelation = await this.orm.call( - "ir.model", - "has_parent_relation", - [technicalName] - ); - this.state.modelData.hasParentRelation = hasParentRelation; - } + this.state.modelName.label = modelLabel[0] && modelLabel[0].display_name; } var ModelFields = []; - for (var [objectType, objectClass] of Object.entries( - globalFiltersFieldMatchers - )) { - for (const objectId of objectClass.getIds()) { - var fields = objectClass.getFields(objectId); + for (const objectType of globalFieldMatchingRegistry.getKeys()) { + const objectClass = globalFieldMatchingRegistry.get(objectType); + for (const objectId of objectClass.getIds(getters)) { + var fields = objectClass.getFields(getters, objectId); this.state.objects[objectType + "_" + objectId] = { id: objectType + "_" + objectId, objectId: objectId, - name: objectClass.getDisplayName(objectId), - tag: await objectClass.getTag(objectId), + name: objectClass.getDisplayName(getters, objectId), + tag: await objectClass.getTag(getters, objectId), fieldMatch: - objectClass.getFieldMatching(objectId, this.props.filter.id) || - {}, + objectClass.getFieldMatching( + getters, + objectId, + this.props.filter.id + ) || {}, fields: fields, type: objectType, - model: objectClass.getModel(objectId), + model: objectClass.getModel(getters, objectId), }; ModelFields.push(fields); } @@ -154,46 +128,9 @@ export class EditFilterPanel extends Component { onChangeFieldMatchOffset(object, ev) { this.state.objects[object.id].fieldMatch.offset = parseInt(ev.target.value, 10); } - async onModelSelected(ev) { - this.state.modelData.technical = ev.technical; - this.state.modelData.label = ev.label; - this.state.modelData.hasParentRelation = await this.orm.call( - "ir.model", - "has_parent_relation", - [ev.technical] - ); - this.state.domainOfAllowedValues = []; - } - async onRecordsSelected(resIds) { - const defaultValueDisplayNames = await this.nameService.loadDisplayNames( - this.state.modelData.technical, - resIds - ); - this.state.defaultValue = resIds; - this.state.defaultValueDisplayNames = Object.values(defaultValueDisplayNames); - } - onUpdateDomain(domain) { - this.state.domainOfAllowedValues = domain; - } - getCorrectDomain() { - const domain = this.state.domainOfAllowedValues; - if (domain) { - return new Domain(domain).toList(user.context); - } - return []; - } - changeDomainRestriction(value) { - this.state.valuesRestricted = value; - this.state.domainOfAllowedValues = []; - } - editDomain() { - this.dialog.add(DomainSelectorDialog, { - resModel: this.state.modelData.technical, - domain: this.getCorrectDomain(), - readonly: false, - isDebugMode: Boolean(this.env.debug), - onConfirm: this.onUpdateDomain.bind(this), - }); + onModelSelected(ev) { + this.state.modelName.technical = ev.technical; + this.state.modelName.label = ev.label; } onDateRangeChange(ev) { this.state.rangeType = ev.target.value; @@ -207,13 +144,10 @@ export class EditFilterPanel extends Component { const filter = { id: this.props.filter.id || uuidGenerator.uuidv4(), type: this.state.type, - label: this.state.label || "", + label: this.state.label, defaultValue: this.state.defaultValue, - defaultValueDisplayNames: this.state.defaultValueDisplayNames, rangeType: this.state.rangeType, - modelName: this.state.modelData.technical, - includeChildren: this.state.includeChildren, - domainOfAllowedValues: this.state.domainOfAllowedValues, + modelName: this.state.modelName.technical, }; const filterMatching = {}; Object.values(this.state.objects).forEach((object) => { @@ -240,11 +174,9 @@ export class EditFilterPanel extends Component { } onFieldMatchUpdate(object, path, fieldInfo) { if (!path) { - // Clear the field match if no path selected this.state.objects[object.id].fieldMatch = {}; return; } - // Extract field definition from fieldInfo (V18> structure) const fieldDef = fieldInfo && fieldInfo.fieldDef ? fieldInfo.fieldDef : fieldInfo; this.state.objects[object.id].fieldMatch = { @@ -265,8 +197,6 @@ export class EditFilterPanel extends Component { if (!field.searchable) { return false; } - - // TODO: Define allowed field types based on filter type const ALLOWED_FIELD_TYPES = [ "char", "text", @@ -275,7 +205,6 @@ export class EditFilterPanel extends Component { "date", "datetime", ]; - if (field.name === "id" && this.state.type === "relation") { const paths = path.split("."); const lastField = paths.at(-2); @@ -289,13 +218,7 @@ export class EditFilterPanel extends Component { } EditFilterPanel.template = "spreadsheet_oca.EditFilterPanel"; -EditFilterPanel.components = { - Checkbox, - DomainSelector, - ModelSelector, - ModelFieldSelector, - MultiRecordSelector, -}; +EditFilterPanel.components = {ModelSelector, ModelFieldSelector}; sidePanelRegistry.add("EditFilterPanel", { title: "Edit Filter", diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index a8081f6b..4cb6a1aa 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -1,16 +1,13 @@ import * as spreadsheet from "@odoo/o-spreadsheet"; -import {Component, onWillStart, onWillUpdateProps, useRef, useState} from "@odoo/owl"; +import {Component, onWillStart, onWillUpdateProps, useState} from "@odoo/owl"; import {Domain} from "@web/core/domain"; import {DomainSelector} from "@web/core/domain_selector/domain_selector"; import {DomainSelectorDialog} from "@web/core/domain_selector_dialog/domain_selector_dialog"; import {_t} from "@web/core/l10n/translation"; import {formatDate} from "@web/core/l10n/dates"; import {useService} from "@web/core/utils/hooks"; -import {ODOO_AGGREGATORS} from "@spreadsheet/pivot/pivot_helpers"; const {DateTime} = luxon; -const {PivotTitleSection, PivotLayoutConfigurator} = spreadsheet.components; -const {useLocalStore, PivotSidePanelStore} = spreadsheet.stores; const {sidePanelRegistry, topbarMenuRegistry, pivotSidePanelRegistry} = spreadsheet.registries; @@ -40,53 +37,9 @@ topbarMenuRegistry.addChild("data_sources", ["data"], (env) => { ]); }); -export class PivotLayoutConfiguratorWithAggregators extends PivotLayoutConfigurator { - setup() { - super.setup(); - this.AGGREGATORS = ODOO_AGGREGATORS; - } -} - -export class PivotTitleSectionInsertion extends PivotTitleSection { - get cogWheelMenuItems() { - const res = super.cogWheelMenuItems; - res.push( - { - name: _t("Re-insert Dynamic"), - icon: "o-spreadsheet-Icon.INSERT_PIVOT", - execute: (env) => this.reinsertTable(env, "dynamic"), - }, - { - name: _t("Re-insert Static"), - icon: "o-spreadsheet-Icon.INSERT_PIVOT", - execute: (env) => this.reinsertTable(env, "static"), - } - ); - return res; - } - reinsertTable(env, mode) { - const zone = env.model.getters.getSelectedZone(); - const table = env.model.getters - .getPivot(this.props.pivotId) - .getTableStructure() - .export(); - env.model.dispatch("INSERT_PIVOT_WITH_TABLE", { - pivotId: this.props.pivotId, - table, - col: zone.left, - row: zone.top, - sheetId: env.model.getters.getActiveSheetId(), - pivotMode: mode, - }); - env.model.dispatch("REFRESH_PIVOT", {id: this.props.pivotId}); - } -} - export class PivotPanelDisplay extends Component { setup() { this.dialog = useService("dialog"); - this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId); - this.pivotPanelRef = useRef("pivotPanel"); onWillStart(this.modelData.bind(this)); onWillUpdateProps(this.modelData.bind(this)); } @@ -95,16 +48,27 @@ export class PivotPanelDisplay extends Component { this.modelLabel = await this.PivotDataSource.getModelLabel(); } get domain() { - return new Domain(this.store.definition.domain).toString(); + return new Domain(this.props.pivotDefinition.domain).toString(); + } + get pivotDimensions() { + const {rows = [], columns = []} = this.props.pivotDefinition; + return [...rows, ...columns].map((dim) => { + const label = dim.displayName || dim.fieldName; + return dim.granularity ? `${label} (${dim.granularity})` : label; + }); } get sortInformation() { - const sortedColumn = this.store.definition.sortedColumn; + const sortedColumn = this.props.pivotDefinition.sortedColumn; const orderTranslate = sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); - const measure = this.store.definition.measures.find( - (m) => m.fieldName === sortedColumn.measure - ); - const label = this.PivotDataSource.getMeasure(measure.id).displayName; + + let label = null; + if (sortedColumn.measure) { + const measure = this.PivotDataSource.getMeasure(sortedColumn.measure); + label = measure ? measure.displayName : sortedColumn.measure; + } else if (sortedColumn.groupBy) { + label = this.PivotDataSource.getFormattedGroupBy(sortedColumn.groupBy); + } return `${label} (${orderTranslate})`; } get lastUpdate() { @@ -116,39 +80,84 @@ export class PivotPanelDisplay extends Component { } editDomain() { this.dialog.add(DomainSelectorDialog, { - resModel: this.store.definition.model, + resModel: this.props.pivotDefinition.model, domain: this.domain, readonly: false, isDebugMode: Boolean(this.env.debug), onConfirm: this.onSelectDomain.bind(this), }); } - updateDimensions(dimensions) { - this.store.update(dimensions); - } onSelectDomain(domain) { - this.store.update({domain}); + this.env.model.dispatch("UPDATE_ODOO_PIVOT_DOMAIN", { + pivotId: this.props.pivotId, + domain: new Domain(domain).toList(), + }); } - getScrollableContainerEl() { - return this.pivotPanelRef.el; + async insertPivot() { + const pivotId = this.props.pivotId; + const {type} = this.env.model.getters.getPivotCoreDefinition(pivotId); + const position = this.env.model.getters.getActivePosition(); + let table = null; + if (type === "ODOO") { + const dataSource = this.env.model.getters.getPivot(pivotId); + const model = await dataSource.copyModelWithOriginalDomain(); + table = model.getCollapsedTableStructure().export(); + } else { + table = this.env.model.getters + .getPivot(pivotId) + .getCollapsedTableStructure() + .export(); + } + this.env.model.dispatch("INSERT_PIVOT_WITH_TABLE", { + ...position, + pivotId, + table, + pivotMode: "static", + }); + this.env.model.dispatch("REFRESH_PIVOT", {id: pivotId}); } - flipAxis() { - const dimensions = { - rows: this.store.definition.columns, - columns: this.store.definition.rows, - }; - this.updateDimensions(dimensions); + async insertDynamicPivot() { + const pivotId = this.props.pivotId; + const {type} = this.env.model.getters.getPivotCoreDefinition(pivotId); + const position = this.env.model.getters.getActivePosition(); + let table = null; + if (type === "ODOO") { + const dataSource = this.env.model.getters.getPivot(this.props.pivotId); + const model = await dataSource.copyModelWithOriginalDomain(); + table = model.getExpandedTableStructure().export(); + } else { + table = this.env.model.getters + .getPivot(this.props.pivotId) + .getExpandedTableStructure() + .export(); + } + this.env.model.dispatch("INSERT_PIVOT_WITH_TABLE", { + ...position, + pivotId, + table, + pivotMode: "dynamic", + }); + this.env.model.dispatch("REFRESH_PIVOT", {id: pivotId}); + } + delete() { + this.env.askConfirmation( + _t("Are you sure you want to delete this pivot?"), + () => { + this.env.model.dispatch("REMOVE_PIVOT", { + pivotId: this.props.pivotId, + }); + } + ); } } PivotPanelDisplay.template = "spreadsheet_oca.PivotPanelDisplay"; PivotPanelDisplay.components = { DomainSelector, - PivotTitleSectionInsertion, - PivotLayoutConfiguratorWithAggregators, }; PivotPanelDisplay.properties = { pivotId: String, + pivotDefinition: Object, }; export class PivotPanel extends Component { @@ -158,6 +167,10 @@ export class PivotPanel extends Component { get pivotType() { return this.env.model.getters.getPivotCoreDefinition(this.pivotId).type; } + get pivotDefinition() { + const dataSource = this.env.model.getters.getPivot(this.pivotId); + return dataSource ? dataSource.definition || {} : {}; + } } PivotPanel.template = "spreadsheet_oca.PivotPanel"; diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js index 767c0143..b4de73ef 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js @@ -5,7 +5,7 @@ import {Many2XAutocomplete} from "@web/views/fields/relational_utils"; import {_t} from "@web/core/l10n/translation"; import {useService} from "@web/core/utils/hooks"; -const {chartSidePanelComponentRegistry, chartSubtypeRegistry} = spreadsheet.registries; +const {chartSidePanelComponentRegistry} = spreadsheet.registries; const {PieChartDesignPanel} = spreadsheet.components; const {Component} = owl; @@ -14,15 +14,19 @@ export class OdooPanel extends Component { this.menus = useService("menu"); } get menuProps() { - return { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + var result = { fieldString: _t("Menu Items"), resModel: "ir.ui.menu", update: this.updateMenu.bind(this), activeActions: {}, getDomain: this.getDomain.bind(this), - placeholder: _t("Select a menu..."), - value: this.menuId ? this.menuId[1] : "", }; + if (menu) { + result.value = menu.name; + result.id = menu.id; + } + return result; } getDomain() { const menus = this.menus @@ -92,69 +96,3 @@ chartSidePanelComponentRegistry configuration: OdooPanel, design: PieChartDesignPanel, }); - -chartSubtypeRegistry.add("odoo_line", { - matcher: (definition) => - definition.type === "odoo_line" && !definition.stacked && !definition.fillArea, - subtypeDefinition: {stacked: false, fillArea: false}, - displayName: _t("Line"), - chartSubtype: "odoo_line", - chartType: "odoo_line", - category: "line", - preview: "o-spreadsheet-ChartPreview.LINE_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_line", { - matcher: (definition) => - definition.type === "odoo_line" && definition.stacked && !definition.fillArea, - subtypeDefinition: {stacked: true, fillArea: false}, - displayName: _t("Stacked Line"), - chartSubtype: "odoo_stacked_line", - chartType: "odoo_line", - category: "line", - preview: "o-spreadsheet-ChartPreview.STACKED_LINE_CHART", -}); -chartSubtypeRegistry.add("odoo_area", { - matcher: (definition) => - definition.type === "odoo_line" && !definition.stacked && definition.fillArea, - subtypeDefinition: {stacked: false, fillArea: true}, - displayName: _t("Area"), - chartSubtype: "odoo_area", - chartType: "odoo_line", - category: "area", - preview: "o-spreadsheet-ChartPreview.AREA_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_area", { - matcher: (definition) => - definition.type === "odoo_line" && definition.stacked && definition.fillArea, - subtypeDefinition: {stacked: true, fillArea: true}, - displayName: _t("Stacked Area"), - chartSubtype: "odoo_stacked_area", - chartType: "odoo_line", - category: "area", - preview: "o-spreadsheet-ChartPreview.STACKED_AREA_CHART", -}); -chartSubtypeRegistry.add("odoo_bar", { - matcher: (definition) => definition.type === "odoo_bar" && !definition.stacked, - subtypeDefinition: {stacked: false}, - displayName: _t("Column"), - chartSubtype: "odoo_bar", - chartType: "odoo_bar", - category: "column", - preview: "o-spreadsheet-ChartPreview.COLUMN_CHART", -}); -chartSubtypeRegistry.add("odoo_stacked_bar", { - matcher: (definition) => definition.type === "odoo_bar" && definition.stacked, - subtypeDefinition: {stacked: true}, - displayName: _t("Stacked Column"), - chartSubtype: "odoo_stacked_bar", - chartType: "odoo_bar", - category: "column", - preview: "o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART", -}); -chartSubtypeRegistry.add("odoo_pie", { - displayName: _t("Pie"), - chartSubtype: "odoo_pie", - chartType: "odoo_pie", - category: "pie", - preview: "o-spreadsheet-ChartPreview.PIE_CHART", -}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js index 81de6fa6..817240c0 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -137,7 +137,8 @@ export class ActionSpreadsheetOca extends Component { } importCreateOrReuseSheet(spreadsheet_model) { var sheetId = spreadsheet_model.getters.getActiveSheetId(); - if (this.import_data.new === undefined) { + var row = 0; + if (this.import_data.new === undefined && this.import_data.new_sheet) { sheetId = uuidGenerator.uuidv4(); spreadsheet_model.dispatch("CREATE_SHEET", { sheetId, @@ -149,6 +150,27 @@ export class ActionSpreadsheetOca extends Component { sheetIdFrom, sheetIdTo: sheetId, }); + } else if (this.import_data.new === undefined) { + row = spreadsheet_model.getters.getNumberRows(sheetId); + var maxcols = spreadsheet_model.getters.getNumberCols(sheetId); + var filled = false; + while (row >= 0) { + for (var col = maxcols; col >= 0; col--) { + if ( + spreadsheet_model.getters.getCell(sheetId, col, row) !== + undefined && + !spreadsheet_model.getters.getCell(sheetId, col, row).isEmpty() + ) { + filled = true; + break; + } + } + if (filled) { + break; + } + row -= 1; + } + row += 1; } return sheetId; } @@ -233,7 +255,7 @@ export class ActionSpreadsheetOca extends Component { }); const ds = spreadsheet_model.getters.getPivot(pivotId); await ds.load(); - const table = ds.getTableStructure(); + const table = ds.getExpandedTableStructure(); spreadsheet_model.dispatch("INSERT_PIVOT_WITH_TABLE", { sheetId, col: 0, diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js index 83aae8cf..55bbd414 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js @@ -5,7 +5,7 @@ import {ImageFileStore} from "./image_file_store.esm"; import {OdooDataProvider} from "@spreadsheet/data_sources/odoo_data_provider"; import {SpreadsheetComponent} from "@spreadsheet/actions/spreadsheet_component"; import {_t} from "@web/core/l10n/translation"; -import {loadSpreadsheetDependencies} from "@spreadsheet/assets_backend/helpers"; +import {loadBundle} from "@web/core/assets"; import {useService} from "@web/core/utils/hooks"; import {useSetupAction} from "@web/search/action_hook"; import {user} from "@web/core/user"; @@ -167,7 +167,7 @@ export class SpreadsheetRenderer extends Component { downloadAsXLXS: this.downloadAsXLXS.bind(this), }); onWillStart(async () => { - await loadSpreadsheetDependencies(); + await loadBundle("spreadsheet.o_spreadsheet"); await waitForDataLoaded(this.spreadsheet_model); await this.env.importData(this.spreadsheet_model); this.spreadsheet_model.joinSession(); diff --git a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml index b2684e67..4c98f2e6 100644 --- a/spreadsheet_oca/views/spreadsheet_spreadsheet.xml +++ b/spreadsheet_oca/views/spreadsheet_spreadsheet.xml @@ -6,26 +6,7 @@ spreadsheet.spreadsheet.search (in spreadsheet_oca) spreadsheet.spreadsheet - - - - - - - - - - - - + @@ -53,13 +34,6 @@
    - -
    - -
    -

    -
    - -
    -

    -
    - +

    + +

    - + - - -
    - - - spreadsheet.spreadsheet.kanban - spreadsheet.spreadsheet - - - - - Edit - Delete - - - - -
    -
    - - - -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - - - Spreadsheets Tags - spreadsheet.spreadsheet.tag - list,form - [] - {} - - Spreadsheets spreadsheet.spreadsheet - kanban,list,form + list,form [] - {'search_default_mysheets': 1} + {} Spreadsheets spreadsheet_oca,static/description/icon.png - - - - - - Configuration - - - - - - - Spreadsheets Tags - - - + From 8743db881a781327e03e2797c91c8917f90855b2 Mon Sep 17 00:00:00 2001 From: Michael Piko Date: Sun, 29 Mar 2026 06:45:15 +1100 Subject: [PATCH 232/235] [FIX] spreadsheet_oca: replace _sql_constraints with models.Constraint for Odoo 19 --- spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py index 3c594031..f4645dda 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py @@ -19,6 +19,7 @@ def _get_default_color(self): help="Transparent tags are not visible in the kanban view", ) - _sql_constraints = [ - ("name_uniq", "unique (name)", "A tag with the same name already exists."), - ] + name_uniq = models.Constraint( + "unique (name)", + "A tag with the same name already exists.", + ) From 0626df6735d88d1914f93a48a00939d701df9710 Mon Sep 17 00:00:00 2001 From: Michael Piko Date: Sun, 29 Mar 2026 06:58:48 +1100 Subject: [PATCH 233/235] [FIX] spreadsheet_oca: Constraint name must start with underscore --- spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py index f4645dda..9be5cf64 100644 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py +++ b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py @@ -19,7 +19,7 @@ def _get_default_color(self): help="Transparent tags are not visible in the kanban view", ) - name_uniq = models.Constraint( + _name_uniq = models.Constraint( "unique (name)", "A tag with the same name already exists.", ) From 31c738dfcf2d380d677cfbe3c914839e167f1ba1 Mon Sep 17 00:00:00 2001 From: Michael Piko Date: Tue, 31 Mar 2026 16:41:29 +1100 Subject: [PATCH 234/235] [FIX] spreadsheet_oca: fix sortedColumn.groupBy and getFormattedGroupBy removed in Odoo 19 --- spreadsheet_oca/README.rst | 55 +- spreadsheet_oca/__manifest__.py | 4 +- ...ns_spreadsheet_oca_odoo19_porting_notes.md | 210 +++++++ .../spreadsheet_spreadsheet_import_mode.xml | 9 + spreadsheet_oca/i18n/es.po | 519 +++++------------ spreadsheet_oca/i18n/fr.po | 510 +++++------------ spreadsheet_oca/i18n/fr_FR.po | 444 ++++----------- spreadsheet_oca/i18n/it.po | 539 +++++------------- spreadsheet_oca/i18n/nl.po | 466 +++++---------- spreadsheet_oca/i18n/pt.po | 494 +++++----------- spreadsheet_oca/i18n/spreadsheet_oca.pot | 319 ++--------- spreadsheet_oca/i18n/zh_CN.po | 444 ++++----------- spreadsheet_oca/models/__init__.py | 2 - spreadsheet_oca/models/ir_model.py | 16 - .../models/spreadsheet_spreadsheet_tag.py | 25 - spreadsheet_oca/readme/CONTRIBUTORS.md | 4 +- spreadsheet_oca/readme/ROADMAP.md | 6 + spreadsheet_oca/readme/USAGE.md | 32 ++ spreadsheet_oca/security/ir.model.access.csv | 2 - spreadsheet_oca/static/description/index.html | 84 ++- .../static/src/pivot/pivot_table.esm.js | 66 +++ .../src/spreadsheet/bundle/chart_panel.esm.js | 80 +-- .../spreadsheet/bundle/chart_panels.esm.js | 24 +- .../src/spreadsheet/bundle/filter.esm.js | 1 + .../bundle/filter_panel_datasources.esm.js | 20 +- .../src/spreadsheet/bundle/spreadsheet.xml | 166 +++--- .../bundle/spreadsheet_action.esm.js | 6 +- .../src/spreadsheet/graph_controller.esm.js | 9 +- .../src/spreadsheet/list_renderer.esm.js | 2 +- .../src/spreadsheet/pivot_controller.esm.js | 12 +- .../utils/dynamic_generators.esm.js | 104 ++++ .../wizards/spreadsheet_select_row_number.py | 3 + .../wizards/spreadsheet_select_row_number.xml | 6 + .../wizards/spreadsheet_spreadsheet_import.py | 17 +- .../spreadsheet_spreadsheet_import.xml | 11 + 35 files changed, 1685 insertions(+), 3026 deletions(-) create mode 100644 spreadsheet_oca/cyder_solutions_spreadsheet_oca_odoo19_porting_notes.md delete mode 100644 spreadsheet_oca/models/ir_model.py delete mode 100644 spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py create mode 100644 spreadsheet_oca/readme/ROADMAP.md create mode 100644 spreadsheet_oca/static/src/pivot/pivot_table.esm.js create mode 100644 spreadsheet_oca/static/src/spreadsheet/utils/dynamic_generators.esm.js diff --git a/spreadsheet_oca/README.rst b/spreadsheet_oca/README.rst index 634f9720..45122c16 100644 --- a/spreadsheet_oca/README.rst +++ b/spreadsheet_oca/README.rst @@ -11,7 +11,7 @@ Spreadsheet Oca !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:afa8556b48ef425ac88f6fa7b69a9f5d76aaef94958f9ce0e14e0efd97024dc0 + !! source digest: sha256:626dcf82bf0ff302572c1c912e4bc95b14e7622c174a5449734cfd8e6ddc4efc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -88,6 +88,44 @@ Usage of ``account.account`` model. (``income``, ``asset_receivable``, etc.) +**Create a new dynamic spreadsheet from pivot** +----------------------------------------------- + +- Go to any pivot +- Press on insert button +- Select the dynamic rows or dynamic columns option and set a number of + rows/columns + +A new table that will be updated with the actual or filtered values will +be added. + +- Note: When a pivot has multiple levels of aggrupations in the rows or + the columns, the number of rows/columns selected will be transfered to + each level. + + Example: number of groups -> 2 number of rows -> 3 + + - val1 + + - subval1.1 + - subval1.2 + - subval1.3 + + - val2 + + - subval2.1 + - subval2.2 + - subval2.3 + + - val3 + + - subval3.1 + - subval3.2 + - subval3.3 + +https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/Hhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/vhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/xhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/phttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ohttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ghttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ +https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/../static/description/spreadsheetdynamic_table.gif + .. |image1| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/spreadsheet_create.png .. |image2| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/spreadsheet_edit.png .. |image3| image:: https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/static/description/o-spreadsheet.png @@ -99,6 +137,17 @@ If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js +Known issues / Roadmap +====================== + +Adding new lines on pivot tables +-------------------------------- + +When we add a pivot table, the number of rows is predefined according to +the current data. + +In order to add new rows, we need to reinsert the pivot table. + Bug Tracker =========== @@ -129,10 +178,6 @@ Contributors - Chris Mann -- `Mind And Go `__ - - - Florent THOMAS - Maintainers ----------- diff --git a/spreadsheet_oca/__manifest__.py b/spreadsheet_oca/__manifest__.py index 743f5f4e..bcbd981e 100644 --- a/spreadsheet_oca/__manifest__.py +++ b/spreadsheet_oca/__manifest__.py @@ -5,7 +5,7 @@ "name": "Spreadsheet Oca", "summary": """ Allow to edit spreadsheets""", - "version": "19.0.1.0.0", + "version": "19.0.1.0.3", "license": "AGPL-3", "author": "CreuBlanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/spreadsheet", @@ -46,6 +46,8 @@ "spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js", "spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js", + "spreadsheet_oca/static/src/spreadsheet/utils/dynamic_generators.esm.js", + "spreadsheet_oca/static/src/pivot/pivot_table.esm.js", ], }, } diff --git a/spreadsheet_oca/cyder_solutions_spreadsheet_oca_odoo19_porting_notes.md b/spreadsheet_oca/cyder_solutions_spreadsheet_oca_odoo19_porting_notes.md new file mode 100644 index 00000000..f68da600 --- /dev/null +++ b/spreadsheet_oca/cyder_solutions_spreadsheet_oca_odoo19_porting_notes.md @@ -0,0 +1,210 @@ +# Odoo 19.0 Port — `spreadsheet_oca` & `spreadsheet_dashboard_oca` + +**Author:** Cyder Solutions +**Date:** March 2026 +**Base version ported:** `spreadsheet_oca` 19.0.1.0.3 / `spreadsheet_dashboard_oca` 19.0.1.0.0 +**Target:** Odoo 19.0 Community Edition + +--- + +## Overview + +This document records all breaking changes encountered and fixes applied when porting `spreadsheet_oca` and `spreadsheet_dashboard_oca` to run against Odoo 19.0 Community Edition. The changes are grouped by module and file. All fixes were verified against a running Odoo 19.0 Community instance. + +--- + +## Module: `spreadsheet_oca` + +### `security/security.xml` + +**Issue 1:** `category_id` field removed from `res.groups` in Odoo 19. + +```xml + + +``` + +**Issue 2:** `users` field removed from `res.groups` in Odoo 19. + +```xml + + +``` + +**Issue 3:** `groups_id` renamed to `group_ids` on `res.users` — affects domain expressions in `ir.rule` records. + +```xml + +['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.groups_id.ids)] + +['|', ('contributor_ids','=', user.id), ('contributor_group_ids','in', user.group_ids.ids)] +``` + +--- + +### `views/spreadsheet_spreadsheet.xml` + +**Issue:** `groups_id` renamed to `group_ids` on `ir.ui.menu` in Odoo 19. + +```xml + + + + +``` + +--- + +### `static/src/spreadsheet/bundle/filter.esm.js` + +**Issue 1:** `globalFiltersFieldMatchers` removed from `global_filters_core_plugin`. Replaced by `globalFieldMatchingRegistry` in `global_filters/helpers`. The registry API also changed — all matcher methods now take `getters` as their first argument. + +```javascript +// BEFORE +import {globalFiltersFieldMatchers} from "@spreadsheet/global_filters/plugins/global_filters_core_plugin"; +// ... +for (var [objectType, objectClass] of Object.entries(globalFiltersFieldMatchers)) { + for (const objectId of objectClass.getIds()) { + var fields = objectClass.getFields(objectId); + name: objectClass.getDisplayName(objectId), + tag: await objectClass.getTag(objectId), + fieldMatch: objectClass.getFieldMatching(objectId, this.props.filter.id), + model: objectClass.getModel(objectId), + +// AFTER +import {globalFieldMatchingRegistry} from "@spreadsheet/global_filters/helpers"; +// ... +const getters = this.env.model.getters; +for (const objectType of globalFieldMatchingRegistry.getKeys()) { + const objectClass = globalFieldMatchingRegistry.get(objectType); + for (const objectId of objectClass.getIds(getters)) { + var fields = objectClass.getFields(getters, objectId); + name: objectClass.getDisplayName(getters, objectId), + tag: await objectClass.getTag(getters, objectId), + fieldMatch: objectClass.getFieldMatching(getters, objectId, this.props.filter.id), + model: objectClass.getModel(getters, objectId), +``` + +**Issue 2:** `RELATIVE_DATE_RANGE_TYPES` removed from `@spreadsheet/helpers/constants`. Renamed to `RELATIVE_PERIODS` in `@spreadsheet/global_filters/helpers`. + +```javascript +// BEFORE +import {RELATIVE_DATE_RANGE_TYPES} from "@spreadsheet/helpers/constants"; +this.relativeDateRangeTypes = RELATIVE_DATE_RANGE_TYPES; + +// AFTER +import {RELATIVE_PERIODS} from "@spreadsheet/global_filters/helpers"; +this.relativeDateRangeTypes = RELATIVE_PERIODS; +``` + +**Issue 3:** `topbarMenuRegistry.add("file", ...)` — the `"file"` menu entry is already registered by the Odoo 19 community `spreadsheet` module. Remove the duplicate registration. + +```javascript +// REMOVE this line entirely +topbarMenuRegistry.add("file", {name: _t("File"), sequence: 10}); +``` + +**Issue 4:** `topbarMenuRegistry.addChild("settings", ...)` — the `"settings"` child is also already registered. Remove it. + +```javascript +// REMOVE this block entirely +topbarMenuRegistry.addChild("settings", ["file"], { + name: _t("Settings"), + sequence: 100, + execute: (env) => env.openSidePanel("Settings"), + icon: "o-spreadsheet-Icon.COG", +}); +``` + +--- + +### `static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js` + +**Issue:** `loadSpreadsheetDependencies` and its module `@spreadsheet/assets_backend/helpers` were removed in Odoo 19. Replaced by `loadBundle` from `@web/core/assets`. + +```javascript +// BEFORE +import {loadSpreadsheetDependencies} from "@spreadsheet/assets_backend/helpers"; +// ... +await loadSpreadsheetDependencies(); + +// AFTER +import {loadBundle} from "@web/core/assets"; +// ... +await loadBundle("spreadsheet.o_spreadsheet"); +``` + +--- + +### `static/src/spreadsheet/bundle/spreadsheet_action.esm.js` + +**Issue:** Odoo 19 raises an error if a registry key already exists without explicit `force: true`. The action `"action_spreadsheet_oca"` is first registered by the lazy loader in `web.assets_backend`, so the bundle registration must use `force: true`. + +```javascript +// BEFORE +actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, { + force: true, +}); +// The OCA module originally had force: true but it was removed during porting +// attempts — it must be restored. + +// CORRECT +actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, { force: true }); +``` + +--- + +### `static/src/spreadsheet/bundle/odoo_panels.esm.js` + +**Issue:** `chartSubtypeRegistry` entries for `odoo_line`, `odoo_stacked_line`, `odoo_area`, `odoo_stacked_area`, `odoo_bar`, `odoo_stacked_bar`, and `odoo_pie` are already registered by the Odoo 19 community `spreadsheet` module. Remove all `chartSubtypeRegistry.add(...)` calls from this file — they are no longer needed. + +The `chartSidePanelComponentRegistry` entries (`odoo_line`, `odoo_bar`, `odoo_pie`) are unique to the OCA module and should be kept. + +--- + +### `static/src/spreadsheet/bundle/filter_panel_datasources.esm.js` + +**Issue:** `pivotSidePanelRegistry.add("ODOO", ...)` — the `"ODOO"` entry is already registered by the Odoo 19 community `spreadsheet` module. Add `{ force: true }` to override it. + +```javascript +// BEFORE +pivotSidePanelRegistry.add("ODOO", { + editor: PivotPanel, +}); + +// AFTER +pivotSidePanelRegistry.add("ODOO", { + editor: PivotPanel, +}, { force: true }); +``` + +--- + +## Module: `spreadsheet_dashboard_oca` + +No changes were required to `spreadsheet_dashboard_oca` itself. All issues were in the base `spreadsheet_oca` module. + +--- + +## Summary of Changed Files + +| Module | File | Change Type | +|--------|------|-------------| +| `spreadsheet_oca` | `security/security.xml` | Removed `category_id`, `users` from groups; renamed `groups_id` → `group_ids` in rules | +| `spreadsheet_oca` | `views/spreadsheet_spreadsheet.xml` | Renamed `groups_id` → `group_ids` on menu record | +| `spreadsheet_oca` | `bundle/filter.esm.js` | Updated `globalFiltersFieldMatchers` API; fixed `RELATIVE_DATE_RANGE_TYPES`; removed duplicate menu registrations | +| `spreadsheet_oca` | `bundle/spreadsheet_renderer.esm.js` | Replaced `loadSpreadsheetDependencies` with `loadBundle` | +| `spreadsheet_oca` | `bundle/spreadsheet_action.esm.js` | Restored `force: true` on `actionRegistry.add` | +| `spreadsheet_oca` | `bundle/odoo_panels.esm.js` | Removed duplicate `chartSubtypeRegistry` entries | +| `spreadsheet_oca` | `bundle/filter_panel_datasources.esm.js` | Added `force: true` to `pivotSidePanelRegistry.add` | + +--- + +## Notes for OCA Contribution + +When submitting these changes as a PR to the OCA/spreadsheet repository: + +- The Python/XML changes are clean and straightforward — standard Odoo 19 API removals. +- The JS changes to `filter.esm.js` involve the most significant API change (`globalFiltersFieldMatchers` → `globalFieldMatchingRegistry` with new method signatures). This should be tested against actual filter panel behaviour with live pivot and list data sources. +- The duplicate registry entries in `odoo_panels.esm.js` and `filter.esm.js` suggest the OCA module may have been developed against an Odoo version where these entries were not yet present in the community spreadsheet module. As Odoo 19 includes them natively, the OCA module should check before registering rather than relying on `force: true` as a blanket fix. +- The `loadSpreadsheetDependencies` removal is a clean API change — `loadBundle` is the documented replacement. diff --git a/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml b/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml index dfd94e1c..1ee1db44 100644 --- a/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml +++ b/spreadsheet_oca/data/spreadsheet_spreadsheet_import_mode.xml @@ -18,4 +18,13 @@ + + add_sheet + Add sheet to spreadsheet + + + diff --git a/spreadsheet_oca/i18n/es.po b/spreadsheet_oca/i18n/es.po index 43fe0eb4..4b51e125 100644 --- a/spreadsheet_oca/i18n/es.po +++ b/spreadsheet_oca/i18n/es.po @@ -17,63 +17,36 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "Añadir fecha" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "Añadir relación" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "Añadir hoja a la hoja de cálculo" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "Añadir texto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -84,59 +57,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "Añadir a hoja de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "Después del siguiente" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "Filtrar automáticamente en el período actual" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "Antes del anterior" @@ -145,16 +101,24 @@ msgstr "Antes del anterior" msgid "Can Be Dynamic" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "Cancelar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "Cambiar nombre" @@ -169,17 +133,6 @@ msgstr "Cliente" msgid "Code" msgstr "Código" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -193,18 +146,16 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" +#, python-format +msgid "Comparisons in pivot are not supprted" +msgstr "Las comparaciones en la vista pivot no están soportadas" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" +msgstr "Confirmar" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -227,7 +178,6 @@ msgstr "Crear hoja de cálculo" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "Creado por" @@ -237,13 +187,13 @@ msgstr "Creado por" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "Creado el" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -255,43 +205,63 @@ msgstr "Nombre de datos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "Valor por defecto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "Dimensiones" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "Nombre a mostrar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "Dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "Descargar XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" -msgstr "" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "Las agrupaciones duplicadas en la vista pivot no están soportadas" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "Columnas Dinámicas" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" +msgstr "Columnas Dinámicas" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows @@ -301,7 +271,6 @@ msgstr "Filas Dinámicas" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "Editar" @@ -309,12 +278,14 @@ msgstr "Editar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "Editar dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "Archivo" @@ -326,27 +297,14 @@ msgstr "Nombre de archivo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "Filtros" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -355,41 +313,15 @@ msgstr "" msgid "Group" msgstr "Agrupado por" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "ID" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -420,19 +352,16 @@ msgstr "Importar datos a hoja de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" -msgstr "" +#, python-format +msgid "Insert dynamic pivot" +msgstr "Insertar pivot dinámica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" -msgstr "" +#, python-format +msgid "Insert pivot" +msgstr "Insertar pivot" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__is_tree @@ -442,6 +371,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "Etiqueta" @@ -451,7 +381,6 @@ msgstr "Etiqueta" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "Última modificación por" @@ -461,31 +390,27 @@ msgstr "Última modificación por" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "Última actualización el" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "Última Actualización el" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "Enlazar al menú de Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "Lista de nombres" @@ -494,23 +419,21 @@ msgstr "Lista de nombres" msgid "Manager" msgstr "Administrador" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" +msgstr "Medidas" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format msgid "Menu Items" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__mode_id msgid "Mode" @@ -520,71 +443,50 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "Modelo" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "Mes" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "Nombre" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "Siguiente" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" msgstr "Siguiente revisión" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" +msgstr "Número de columnas" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows @@ -592,24 +494,9 @@ msgid "Number Of Rows" msgstr "Número de filas" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" +msgstr "Número de columnas" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view @@ -617,51 +504,38 @@ msgid "OK" msgstr "Vale" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" -msgstr "Propietario" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" +msgstr "Propietario" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" -msgstr "" +#, python-format +msgid "Pivot name" +msgstr "Nombre de pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "Anterior" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "Trimestre" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -680,24 +554,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "Actualizar todos los datos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "Modelo relacionado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "Periodo relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "Eliminar" @@ -706,42 +584,26 @@ msgstr "Eliminar" msgid "Res" msgstr "Res" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "Guardar" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" msgstr "Seleccione el número de filas a duplicar" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" +msgstr "Seleccione la cantidad de filas" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -755,18 +617,21 @@ msgstr "Revisión del servidor" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "Ordenando" @@ -794,11 +659,6 @@ msgstr "Hoja de cálculo Raw" msgid "Spreadsheet Revision" msgstr "Revisión de hoja de cálculo" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -816,54 +676,21 @@ msgstr "" msgid "Spreadsheets" msgstr "Hojas de cálculo" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "Apilados" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" +"Este campo permite generar tablas en las que se actualizan sus columnas con " +"los filtros establecidos en las hojas de cálculo." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -877,51 +704,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "Intervalo de tiempo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "Tipo" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "Sin nombre" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -930,16 +746,6 @@ msgstr "" msgid "User" msgstr "Usuario" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -948,35 +754,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "Año" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "ascendiendo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "descendiendo" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "el nombre es requerido" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "no actualizado" @@ -985,59 +791,6 @@ msgstr "no actualizado" msgid "websocket message handling" msgstr "gestión de mensajes websocket" -#~ msgid "Dimensions" -#~ msgstr "Dimensiones" - -#~ msgid "Insert dynamic pivot" -#~ msgstr "Insertar pivot dinámica" - -#~ msgid "Insert pivot" -#~ msgstr "Insertar pivot" - -#~ msgid "Measures" -#~ msgstr "Medidas" - -#~ msgid "Pivot name" -#~ msgstr "Nombre de pivot" - -#~ msgid "Add sheet to spreadsheet" -#~ msgstr "Añadir hoja a la hoja de cálculo" - -#, python-format -#~ msgid "Comparisons in pivot are not supprted" -#~ msgstr "Las comparaciones en la vista pivot no están soportadas" - -#, python-format -#~ msgid "Confirm" -#~ msgstr "Confirmar" - -#, python-format -#~ msgid "Duplicated groupbys in pivot are not supprted" -#~ msgstr "Las agrupaciones duplicadas en la vista pivot no están soportadas" - -#~ msgid "Dynamic Cols" -#~ msgstr "Columnas Dinámicas" - -#~ msgid "Dynamic Columns" -#~ msgstr "Columnas Dinámicas" - -#~ msgid "Number Of Cols" -#~ msgstr "Número de columnas" - -#~ msgid "Number of Columns" -#~ msgstr "Número de columnas" - -#, python-format -#~ msgid "Select the quantity of rows" -#~ msgstr "Seleccione la cantidad de filas" - -#~ msgid "" -#~ "This field allows you to generate tables that its cols are updated with " -#~ "the filters set in the spreadsheets." -#~ msgstr "" -#~ "Este campo permite generar tablas en las que se actualizan sus columnas " -#~ "con los filtros establecidos en las hojas de cálculo." - #~ msgid "Data" #~ msgstr "Datos" diff --git a/spreadsheet_oca/i18n/fr.po b/spreadsheet_oca/i18n/fr.po index 1fb8857f..7db8304e 100644 --- a/spreadsheet_oca/i18n/fr.po +++ b/spreadsheet_oca/i18n/fr.po @@ -16,63 +16,36 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.6.2\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "Ajouter une feuille au tableur" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -83,59 +56,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "Ajouter au tableur" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "" @@ -144,16 +100,24 @@ msgstr "" msgid "Can Be Dynamic" msgstr "Peut être dynamique" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "Annuler" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "Modifier le nom" @@ -168,17 +132,6 @@ msgstr "" msgid "Code" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -192,18 +145,16 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" +#, python-format +msgid "Comparisons in pivot are not supprted" +msgstr "Les comparaisons dans les pivots ne sont pas supportées" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" +msgstr "Valider" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -226,7 +177,6 @@ msgstr "Créer un tableur" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "Créé par" @@ -236,13 +186,13 @@ msgstr "Créé par" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "Créé le" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -254,44 +204,64 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "Dimensions" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "Nom" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "Domaine" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "Télécharger XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "Colonnes dynamiques" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" +msgstr "Colonnes dynamiques" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -300,7 +270,6 @@ msgstr "Lignes dynamiques" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "Edition" @@ -308,12 +277,14 @@ msgstr "Edition" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "Modifier le domaine" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "Fichier" @@ -325,27 +296,14 @@ msgstr "Nom de fichier" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "Filtre" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -354,41 +312,15 @@ msgstr "" msgid "Group" msgstr "Groupe" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -419,19 +351,16 @@ msgstr "Importer des données au tableur" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" -msgstr "" +#, python-format +msgid "Insert dynamic pivot" +msgstr "Insérer un pivot dynamique" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" -msgstr "" +#, python-format +msgid "Insert pivot" +msgstr "Insérer un pivot" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__is_tree @@ -441,6 +370,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "Étiquette" @@ -450,7 +380,6 @@ msgstr "Étiquette" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "Dernière mise à jour par" @@ -460,31 +389,27 @@ msgstr "Dernière mise à jour par" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "Dernière mise à jour le" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "Dernière mise à jour à" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "" @@ -495,19 +420,17 @@ msgstr "Gestionnaire" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Menu Items" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format +msgid "Menu Items" msgstr "" #. module: spreadsheet_oca @@ -519,71 +442,50 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "Modèle" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "Mois" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "Nom" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "Suivant" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" +msgstr "Nombre de colonnes" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows @@ -591,24 +493,9 @@ msgid "Number Of Rows" msgstr "Nombre de lignes" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" +msgstr "Nombre de colonnes" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view @@ -616,51 +503,38 @@ msgid "OK" msgstr "OK" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" -msgstr "Propriétaire" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" +msgstr "Propriétaire" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" -msgstr "" +#, python-format +msgid "Pivot name" +msgstr "Nom du pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "Précédent" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -679,24 +553,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "Mettre à jour les données" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "Supprimer" @@ -705,42 +583,26 @@ msgstr "Supprimer" msgid "Res" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "Enregistrer" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" +msgstr "Sélectionnez la quantité de lignes" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -754,18 +616,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "Tri" @@ -793,11 +658,6 @@ msgstr "" msgid "Spreadsheet Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -815,54 +675,21 @@ msgstr "" msgid "Spreadsheets" msgstr "Feuilles de calcul" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" +"Ce champ vous permet de générer des tableaux dont les colonnes sont mises à " +"jour avec les filtres définis dans les feuilles de calcul." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -876,51 +703,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -929,16 +745,6 @@ msgstr "" msgid "User" msgstr "Utilisateur" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -947,35 +753,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "Année" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "Croissant" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "Décroissant" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "Le nom est requis" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "" @@ -984,52 +790,6 @@ msgstr "" msgid "websocket message handling" msgstr "" -#~ msgid "Dimensions" -#~ msgstr "Dimensions" - -#~ msgid "Insert dynamic pivot" -#~ msgstr "Insérer un pivot dynamique" - -#~ msgid "Insert pivot" -#~ msgstr "Insérer un pivot" - -#~ msgid "Pivot name" -#~ msgstr "Nom du pivot" - -#~ msgid "Add sheet to spreadsheet" -#~ msgstr "Ajouter une feuille au tableur" - -#, python-format -#~ msgid "Comparisons in pivot are not supprted" -#~ msgstr "Les comparaisons dans les pivots ne sont pas supportées" - -#, python-format -#~ msgid "Confirm" -#~ msgstr "Valider" - -#~ msgid "Dynamic Cols" -#~ msgstr "Colonnes dynamiques" - -#~ msgid "Dynamic Columns" -#~ msgstr "Colonnes dynamiques" - -#~ msgid "Number Of Cols" -#~ msgstr "Nombre de colonnes" - -#~ msgid "Number of Columns" -#~ msgstr "Nombre de colonnes" - -#, python-format -#~ msgid "Select the quantity of rows" -#~ msgstr "Sélectionnez la quantité de lignes" - -#~ msgid "" -#~ "This field allows you to generate tables that its cols are updated with " -#~ "the filters set in the spreadsheets." -#~ msgstr "" -#~ "Ce champ vous permet de générer des tableaux dont les colonnes sont mises " -#~ "à jour avec les filtres définis dans les feuilles de calcul." - #~ msgid "Data" #~ msgstr "Données" diff --git a/spreadsheet_oca/i18n/fr_FR.po b/spreadsheet_oca/i18n/fr_FR.po index 9db7709b..1b009ed1 100644 --- a/spreadsheet_oca/i18n/fr_FR.po +++ b/spreadsheet_oca/i18n/fr_FR.po @@ -14,63 +14,36 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -81,59 +54,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "" @@ -142,16 +98,24 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "" @@ -166,17 +130,6 @@ msgstr "" msgid "Code" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -190,17 +143,15 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" +#, python-format +msgid "Comparisons in pivot are not supprted" msgstr "" #. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" msgstr "" #. module: spreadsheet_oca @@ -224,7 +175,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "" @@ -234,13 +184,13 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -252,42 +202,62 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" msgstr "" #. module: spreadsheet_oca @@ -298,7 +268,6 @@ msgstr "" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "" @@ -306,12 +275,14 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "" @@ -323,27 +294,14 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -352,41 +310,15 @@ msgstr "" msgid "Group" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -417,18 +349,15 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" +#, python-format +msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" +#, python-format +msgid "Insert pivot" msgstr "" #. module: spreadsheet_oca @@ -439,6 +368,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "" @@ -448,7 +378,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "" @@ -458,31 +387,27 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "" @@ -493,19 +418,17 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Menu Items" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format +msgid "Menu Items" msgstr "" #. module: spreadsheet_oca @@ -517,69 +440,48 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id +msgid "Next Revision" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id -msgid "Next Revision" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" msgstr "" #. module: spreadsheet_oca @@ -589,23 +491,8 @@ msgid "Number Of Rows" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" msgstr "" #. module: spreadsheet_oca @@ -614,51 +501,38 @@ msgid "OK" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" +#, python-format +msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -677,24 +551,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "" @@ -703,40 +581,24 @@ msgstr "" msgid "Res" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." +#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number +msgid "Select number of rows to duplicate row" msgstr "" #. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number -msgid "Select number of rows to duplicate row" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" msgstr "" #. module: spreadsheet_oca @@ -752,18 +614,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "" @@ -791,11 +656,6 @@ msgstr "" msgid "Spreadsheet Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -813,53 +673,18 @@ msgstr "" msgid "Spreadsheets" msgstr "" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" #. module: spreadsheet_oca @@ -872,51 +697,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -925,16 +739,6 @@ msgstr "" msgid "User" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -943,35 +747,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "" diff --git a/spreadsheet_oca/i18n/it.po b/spreadsheet_oca/i18n/it.po index 0ad3a5a9..7916fe03 100644 --- a/spreadsheet_oca/i18n/it.po +++ b/spreadsheet_oca/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-03-03 10:45+0000\n" +"PO-Revision-Date: 2025-06-24 09:25+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,65 +14,38 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.15.2\n" - -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "Esiste già una etichetta con lo stesso nome." - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "Azione richiesta" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "Attivo" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "Attività" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "Decorazione eccezione attività" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "Stato attività" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "Icona tipo attività" +"X-Generator: Weblate 5.10.4\n" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "Aggiungi data" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "Aggiungi relazione" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "Aggiungi scheda a foglIo di calcolo" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "Aggiungi testo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "Aggiungi al foglio di calcolo" @@ -83,59 +56,42 @@ msgstr "Aggiungi al foglio di calcolo" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "Aggiungi al foglio di calcolo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "Dopo il sucessivo" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "In archivio" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "Si è sicuri di voler cancellare questo elenco?" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "Area" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" -msgstr "Conteggio allegati" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" +msgstr "Si è sicuri di voler cancellare questa pivot?" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "Filtra automaticamente sul periodo attuale" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "Sfondo badge" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "Prima del precedente" @@ -144,16 +100,24 @@ msgstr "Prima del precedente" msgid "Can Be Dynamic" msgstr "Può essere dinamico" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "Può avere colonne dinamiche" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "Annulla" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "Modifica nome" @@ -168,17 +132,6 @@ msgstr "Client" msgid "Code" msgstr "Codice" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "Colore" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "Colonna" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -192,18 +145,16 @@ msgstr "Azienda" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" -msgstr "Il confronto nella pivot non è supportato" - -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "Configurazione" +#, python-format +msgid "Comparisons in pivot are not supprted" +msgstr "Le comparazioni nella vista pivot non sono supportate" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "Contesto" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" +msgstr "Conferma" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -226,7 +177,6 @@ msgstr "Crea foglio di calcolo" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "Creato da" @@ -236,13 +186,13 @@ msgstr "Creato da" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "Creato il" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "Valuta" @@ -254,43 +204,63 @@ msgstr "Nome origine dati" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "Valore predefinito" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "Cancella" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "Dimensioni" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "Nome visualizzato" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "Dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "Scarica XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" -msgstr "Il raggruppamento nella pivot non è supportato" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "Nelle viste pivot Non sono supportati i raggruppamenti duplicati" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "Colonne dinamiche" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" +msgstr "Colonne dinamiche" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows @@ -300,7 +270,6 @@ msgstr "Righe dinamiche" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "Modifica" @@ -308,12 +277,14 @@ msgstr "Modifica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "Modifica dominio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "File" @@ -325,27 +296,14 @@ msgstr "Nome file" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "Filtri" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "Seguito da" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "Seguito da (partner)" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "Icona Font Awesome es. fa-tasks" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "Da / A" @@ -354,41 +312,15 @@ msgstr "Da / A" msgid "Group" msgstr "Gruppo" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "Ha un messaggio" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "ID" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "Icona" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "Icona per indicare un'attività eccezione." - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "Se selezionata, nuovi messaggi richiedono attenzione." - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna." - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -421,19 +353,16 @@ msgstr "Importa dati nel foglio di calcolo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" -msgstr "" +#, python-format +msgid "Insert dynamic pivot" +msgstr "Inserisci pivot dinamico" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "Inserisci elenco" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" -msgstr "Segue" +#, python-format +msgid "Insert pivot" +msgstr "Inserisci pivot" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__is_tree @@ -443,6 +372,7 @@ msgstr "È albero" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "Etichetta" @@ -452,7 +382,6 @@ msgstr "Etichetta" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "Ultimo aggiornamento di" @@ -462,31 +391,27 @@ msgstr "Ultimo aggiornamento di" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "Ultimo aggiornamento il" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "Ultimo aggiornamento il" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "Riga" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "Collegamento al menu Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "Nome elenco" @@ -495,23 +420,21 @@ msgstr "Nome elenco" msgid "Manager" msgstr "Supervisore" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" +msgstr "Misure" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format msgid "Menu Items" msgstr "Menu elementi" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" -msgstr "Errore di consegna messaggio" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" -msgstr "Messaggi" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__mode_id msgid "Mode" @@ -521,71 +444,50 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "Modello" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "Mese" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "Mese / Trimestre" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "Scadenza mia attività" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "I miei prospetti" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "Successiva" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "Scadenza prossima attività" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "Riepilogo prossima attività" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" -msgstr "Tipo prossima attività" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" msgstr "Revisione successiva" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" +msgstr "Numero di colonne" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows @@ -593,76 +495,48 @@ msgid "Number Of Rows" msgstr "Numero di righe" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "Numero di azioni" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "Numero di errori" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "Numero di messaggi che richiedono un'azione" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "Numero di messaggi con errore di consegna" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" +msgstr "Numero di colonne" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view msgid "OK" msgstr "OK" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" +msgstr "Foglio di calcolo Odoo" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id msgid "Owner" msgstr "Proprietario" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" -msgstr "Proprietà" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "Torta" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" -msgstr "" +#, python-format +msgid "Pivot name" +msgstr "Nome pivot" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "Precedente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "Trimestre" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "Reinserisci dinamico" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "Reinserisci statico" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -681,24 +555,28 @@ msgstr "Gruppi lettori" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "Aggiorna tutti i dati" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "Modello correlato" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "Periodo relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "Rimuovi" @@ -707,42 +585,26 @@ msgstr "Rimuovi" msgid "Res" msgstr "Res" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "Utente responsabile" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "Righe:" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "Salva" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." -msgstr "Selezionare un menu..." - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" msgstr "Selezionare il numero di righe per duplicare la riga" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" +msgstr "Selezionare la quantità di righe" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -756,18 +618,21 @@ msgstr "Revisione server" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "Impostazioni" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "Foglio1" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "Ordinamento" @@ -795,11 +660,6 @@ msgstr "Foglio di calcolo grezzo" msgid "Spreadsheet Revision" msgstr "Revisione foglio di calcolo" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "Etichetta foglio di calcolo" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -817,58 +677,21 @@ msgstr "File foglio di calcolo" msgid "Spreadsheets" msgstr "Fogli di calcolo" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "Etichette foglio di calcolo" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "Immagine foglio di calcolo" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "In coda" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "Area riempita" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "Colonna riempita" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "Riga riempita" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" -"Stato in base alle attività\n" -"Scaduto: la data richiesta è trascorsa\n" -"Oggi: la data attività è oggi\n" -"Pianificato: attività future." - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" -msgstr "Etichette" +"Questo campo consente di generare tabelle le cui colonne sono aggiornate con " +"i filtri impostati nei fogli di lavoro." #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -882,51 +705,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "Intervallo orario" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "Attiva menu a tendina" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "Righe usati totali nell'inserimento dell'elenco" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "Le etichette trasparenti non sono visibili nella vista Kanban" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "Tipo" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "Tipo di attività eccezione sul record." - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "Senza nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "Carica" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "Carica un foglio di calcolo" @@ -935,16 +747,6 @@ msgstr "Carica un foglio di calcolo" msgid "User" msgstr "Utente" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "Messaggi sito web" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "Cronologia comunicazioni sito web" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -953,35 +755,35 @@ msgstr "Accesso in scrittura" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "Anno" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "crescente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "decrescente" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "es. KPI vendite" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "è richiesto il nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "non aggiornato" @@ -990,69 +792,6 @@ msgstr "non aggiornato" msgid "websocket message handling" msgstr "gestione messaggio websocket" -#~ msgid "Are you sure you want to delete this pivot?" -#~ msgstr "Si è sicuri di voler cancellare questa pivot?" - -#~ msgid "Dimensions" -#~ msgstr "Dimensioni" - -#~ msgid "Insert dynamic pivot" -#~ msgstr "Inserisci pivot dinamico" - -#~ msgid "Insert pivot" -#~ msgstr "Inserisci pivot" - -#~ msgid "Measures" -#~ msgstr "Misure" - -#~ msgid "Pivot name" -#~ msgstr "Nome pivot" - -#~ msgid "Add sheet to spreadsheet" -#~ msgstr "Aggiungi scheda a foglIo di calcolo" - -#~ msgid "Can Have Dynamic Cols" -#~ msgstr "Può avere colonne dinamiche" - -#, python-format -#~ msgid "Comparisons in pivot are not supprted" -#~ msgstr "Le comparazioni nella vista pivot non sono supportate" - -#, python-format -#~ msgid "Confirm" -#~ msgstr "Conferma" - -#, python-format -#~ msgid "Duplicated groupbys in pivot are not supprted" -#~ msgstr "Nelle viste pivot Non sono supportati i raggruppamenti duplicati" - -#~ msgid "Dynamic Cols" -#~ msgstr "Colonne dinamiche" - -#~ msgid "Dynamic Columns" -#~ msgstr "Colonne dinamiche" - -#~ msgid "Number Of Cols" -#~ msgstr "Numero di colonne" - -#~ msgid "Number of Columns" -#~ msgstr "Numero di colonne" - -#, python-format -#~ msgid "Odoo Spreadsheet" -#~ msgstr "Foglio di calcolo Odoo" - -#, python-format -#~ msgid "Select the quantity of rows" -#~ msgstr "Selezionare la quantità di righe" - -#~ msgid "" -#~ "This field allows you to generate tables that its cols are updated with " -#~ "the filters set in the spreadsheets." -#~ msgstr "" -#~ "Questo campo consente di generare tabelle le cui colonne sono aggiornate " -#~ "con i filtri impostati nei fogli di lavoro." - #~ msgid "Data" #~ msgstr "Dati" diff --git a/spreadsheet_oca/i18n/nl.po b/spreadsheet_oca/i18n/nl.po index c87814ca..111f961c 100644 --- a/spreadsheet_oca/i18n/nl.po +++ b/spreadsheet_oca/i18n/nl.po @@ -16,63 +16,36 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.17\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "Datum toevoegen" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "Relatie toevoegen" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "Blad toevoegen aan spreadsheet" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "Tekst toevoegen" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -83,59 +56,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "Toevoegen aan spreadsheet" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "Na volgende" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "Automatisch filteren op de huidige periode" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "Vóór Vorige" @@ -144,16 +100,24 @@ msgstr "Vóór Vorige" msgid "Can Be Dynamic" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "Annuleren" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "Verander naam" @@ -168,17 +132,6 @@ msgstr "Cliënt" msgid "Code" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -192,18 +145,16 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" +#, python-format +msgid "Comparisons in pivot are not supprted" msgstr "" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" +msgstr "Bevestigen" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -226,7 +177,6 @@ msgstr "Spreadsheet maken" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "Gemaakt door" @@ -236,13 +186,13 @@ msgstr "Gemaakt door" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "Gemaakt op" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -254,42 +204,62 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "Standaardwaarde" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "Dimensies" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "Weergavenaam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "Domein" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" msgstr "" #. module: spreadsheet_oca @@ -300,7 +270,6 @@ msgstr "" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "Bewerking" @@ -308,12 +277,14 @@ msgstr "Bewerking" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "Bewerk domein" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "Bestand" @@ -325,27 +296,14 @@ msgstr "Bestandsnaam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -354,41 +312,15 @@ msgstr "" msgid "Group" msgstr "Groep" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -419,19 +351,16 @@ msgstr "Gegevens importeren naar spreadsheet" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" +#, python-format +msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" -msgstr "" +#, python-format +msgid "Insert pivot" +msgstr "Draaipunt invoegen" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__is_tree @@ -441,6 +370,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "" @@ -450,7 +380,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "Laatst aangepast door" @@ -460,31 +389,27 @@ msgstr "Laatst aangepast door" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "Laatst bijgewerkt op" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "Laatst bijgewerkt op" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "Link naar het Odoo-menu" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "Naam van lijst" @@ -493,23 +418,21 @@ msgstr "Naam van lijst" msgid "Manager" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" +msgstr "Afmetingen" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format msgid "Menu Items" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__mode_id msgid "Mode" @@ -519,100 +442,71 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "Maand" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "Naam" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "Volgende" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" msgstr "Volgende revisie" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows -msgid "Number Of Rows" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows +msgid "Number Of Rows" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +msgid "OK" msgstr "" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view -msgid "OK" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca @@ -620,47 +514,27 @@ msgstr "" msgid "Owner" msgstr "Eigenaar" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" +#, python-format +msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "Vorig" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "Kwartaal" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -679,24 +553,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "Ververs alle gegevens" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "Gerelateerd model" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "Relatieve periode" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "Verwijderen" @@ -705,40 +583,24 @@ msgstr "Verwijderen" msgid "Res" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "Opslaan" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." +#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number +msgid "Select number of rows to duplicate row" msgstr "" #. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number -msgid "Select number of rows to duplicate row" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" msgstr "" #. module: spreadsheet_oca @@ -754,18 +616,21 @@ msgstr "Serverversie" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "Sortering" @@ -793,11 +658,6 @@ msgstr "Spreadsheet onbewerkt" msgid "Spreadsheet Revision" msgstr "Revisie van spreadsheets" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -815,53 +675,18 @@ msgstr "" msgid "Spreadsheets" msgstr "" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "Gestapeld" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" #. module: spreadsheet_oca @@ -874,51 +699,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "Tijdsbestek" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "Naamloos" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -927,16 +741,6 @@ msgstr "" msgid "User" msgstr "Gebruiker" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -945,35 +749,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "Jaar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "oplopend" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "aflopend" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "Naam is vereist" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "niet geüpdate" @@ -982,22 +786,6 @@ msgstr "niet geüpdate" msgid "websocket message handling" msgstr "afhandeling van websocket-berichten" -#~ msgid "Dimensions" -#~ msgstr "Dimensies" - -#~ msgid "Insert pivot" -#~ msgstr "Draaipunt invoegen" - -#~ msgid "Measures" -#~ msgstr "Afmetingen" - -#~ msgid "Add sheet to spreadsheet" -#~ msgstr "Blad toevoegen aan spreadsheet" - -#, python-format -#~ msgid "Confirm" -#~ msgstr "Bevestigen" - #~ msgid "Data" #~ msgstr "Gegevens" diff --git a/spreadsheet_oca/i18n/pt.po b/spreadsheet_oca/i18n/pt.po index 4ac81b98..825d818b 100644 --- a/spreadsheet_oca/i18n/pt.po +++ b/spreadsheet_oca/i18n/pt.po @@ -16,63 +16,36 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.6.2\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "Adicionar data" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "Adicionar relação" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "Adicionar folha ao painel" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "Adicionar texto" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -83,59 +56,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "Adicionar à folha de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "Depois de a seguir" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "Filtrar automaticamente no período atual" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "Antes de Anterior" @@ -144,16 +100,24 @@ msgstr "Antes de Anterior" msgid "Can Be Dynamic" msgstr "Pode Ser Dinâmico" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "Cancelar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "Mudar Nome" @@ -168,17 +132,6 @@ msgstr "Cliente" msgid "Code" msgstr "Código" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -192,18 +145,16 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" +#, python-format +msgid "Comparisons in pivot are not supprted" +msgstr "Comparações no pivô não são suportadas" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" +msgstr "Confirmar" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids @@ -226,7 +177,6 @@ msgstr "Criar folha de cálculo" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "Criado por" @@ -236,13 +186,13 @@ msgstr "Criado por" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "Criado em" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -254,42 +204,62 @@ msgstr "Nome da Fonte de Dados" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "Valor predefinido" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "Dimensões" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "Nome Apresentado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "Domínio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "Descarregar XLSX" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "Agrupamentos duplicados no pivô não são suportados" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" msgstr "" #. module: spreadsheet_oca @@ -300,7 +270,6 @@ msgstr "" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "Editar" @@ -308,12 +277,14 @@ msgstr "Editar" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "Editar domínio" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "Arquivo" @@ -325,27 +296,14 @@ msgstr "Nome do Arquivo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "Filtros" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -354,41 +312,15 @@ msgstr "" msgid "Group" msgstr "Grupo" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "ID" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -419,19 +351,16 @@ msgstr "Importar dados para a folha de cálculo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" -msgstr "" +#, python-format +msgid "Insert dynamic pivot" +msgstr "Inserir pivô dinâmico" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" -msgstr "" +#, python-format +msgid "Insert pivot" +msgstr "Inserir pivô" #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__is_tree @@ -441,6 +370,7 @@ msgstr "É Árvore" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "Rótulo" @@ -450,7 +380,6 @@ msgstr "Rótulo" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "Última Modificação por" @@ -460,31 +389,27 @@ msgstr "Última Modificação por" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "Última Actualização em" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "Última Modificação a" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "Link para o menu Odoo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "Nome da lista" @@ -493,23 +418,21 @@ msgstr "Nome da lista" msgid "Manager" msgstr "Gestor" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" +msgstr "Medidas" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format msgid "Menu Items" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__mode_id msgid "Mode" @@ -519,71 +442,50 @@ msgstr "Modo" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "Modelo" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "Mês" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "Próximo" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id msgid "Next Revision" msgstr "Próxima Revisão" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_rows @@ -591,23 +493,8 @@ msgid "Number Of Rows" msgstr "Número De Linhas" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" msgstr "" #. module: spreadsheet_oca @@ -616,51 +503,38 @@ msgid "OK" msgstr "OK" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" -msgstr "Dono" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" -msgstr "" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" +msgstr "Dono" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" -msgstr "" +#, python-format +msgid "Pivot name" +msgstr "Nome do pivô" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "Anterior" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "Trimestre" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -679,24 +553,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "Atualizar todos os dados" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "Modelo relacionado" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "Período Relativo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "Remover" @@ -705,42 +583,26 @@ msgstr "Remover" msgid "Res" msgstr "Res" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "Guardar" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" msgstr "Selecionar o número de linhas para duplicar a linha" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" +msgstr "Selecione a quantidade de linhas" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__sequence msgid "Sequence" @@ -754,18 +616,21 @@ msgstr "Revisão Servidor" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "Ordenação" @@ -793,11 +658,6 @@ msgstr "Folha de Cálculo Bruta" msgid "Spreadsheet Revision" msgstr "Revisão da Folha de Cálculo" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -815,53 +675,18 @@ msgstr "" msgid "Spreadsheets" msgstr "Folhas de Cálculo" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "Empilhados" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" #. module: spreadsheet_oca @@ -874,51 +699,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "Intervalo de tempo" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "Tipo" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "Sem Nome" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -927,16 +741,6 @@ msgstr "" msgid "User" msgstr "Utilizador" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -945,35 +749,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "Ano" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "ascendente" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "descendente" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "nome é necessário" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "não atualizado" @@ -982,40 +786,6 @@ msgstr "não atualizado" msgid "websocket message handling" msgstr "tratamento de mensagens websocket" -#~ msgid "Dimensions" -#~ msgstr "Dimensões" - -#~ msgid "Insert dynamic pivot" -#~ msgstr "Inserir pivô dinâmico" - -#~ msgid "Insert pivot" -#~ msgstr "Inserir pivô" - -#~ msgid "Measures" -#~ msgstr "Medidas" - -#~ msgid "Pivot name" -#~ msgstr "Nome do pivô" - -#~ msgid "Add sheet to spreadsheet" -#~ msgstr "Adicionar folha ao painel" - -#, python-format -#~ msgid "Comparisons in pivot are not supprted" -#~ msgstr "Comparações no pivô não são suportadas" - -#, python-format -#~ msgid "Confirm" -#~ msgstr "Confirmar" - -#, python-format -#~ msgid "Duplicated groupbys in pivot are not supprted" -#~ msgstr "Agrupamentos duplicados no pivô não são suportados" - -#, python-format -#~ msgid "Select the quantity of rows" -#~ msgstr "Selecione a quantidade de linhas" - #~ msgid "Data" #~ msgstr "Data" diff --git a/spreadsheet_oca/i18n/spreadsheet_oca.pot b/spreadsheet_oca/i18n/spreadsheet_oca.pot index e5a89eaa..a644d9ee 100644 --- a/spreadsheet_oca/i18n/spreadsheet_oca.pot +++ b/spreadsheet_oca/i18n/spreadsheet_oca.pot @@ -13,42 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -61,6 +25,11 @@ msgstr "" msgid "Add relation" msgstr "" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -90,16 +59,15 @@ msgid "After next" msgstr "" #. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Are you sure you want to delete this list?" +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca @@ -108,28 +76,12 @@ msgstr "" msgid "Area" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 msgid "Automatically filter on the current period" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -141,6 +93,12 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -165,11 +123,6 @@ msgstr "" msgid "Code" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 @@ -192,16 +145,6 @@ msgstr "" msgid "Comparisons in pivot are not supported" msgstr "" -#. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__contributor_ids msgid "Contributors" @@ -223,7 +166,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "" @@ -233,7 +175,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "" @@ -257,17 +198,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Dimensions" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "" @@ -289,6 +234,16 @@ msgstr "" msgid "Duplicated groupbys in pivot are not supported" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_rows #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic @@ -297,7 +252,6 @@ msgstr "" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "" @@ -325,21 +279,6 @@ msgstr "" msgid "Filters" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 @@ -351,41 +290,15 @@ msgstr "" msgid "Group" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -416,7 +329,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" +msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca @@ -426,8 +339,9 @@ msgid "Insert list" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Insert pivot" msgstr "" #. module: spreadsheet_oca @@ -447,7 +361,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "" @@ -457,7 +370,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "" @@ -492,19 +404,15 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Menu Items" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +msgid "Measures" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +msgid "Menu Items" msgstr "" #. module: spreadsheet_oca @@ -519,11 +427,6 @@ msgstr "" msgid "Model" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -536,22 +439,12 @@ msgstr "" msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "" @@ -562,23 +455,13 @@ msgid "Next" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id +msgid "Next Revision" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id -msgid "Next Revision" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" msgstr "" #. module: spreadsheet_oca @@ -588,23 +471,8 @@ msgid "Number Of Rows" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" msgstr "" #. module: spreadsheet_oca @@ -617,11 +485,6 @@ msgstr "" msgid "Owner" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 @@ -631,7 +494,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" +msgid "Pivot name" msgstr "" #. module: spreadsheet_oca @@ -646,18 +509,6 @@ msgstr "" msgid "Quarter" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -702,17 +553,6 @@ msgstr "" msgid "Res" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -726,13 +566,6 @@ msgstr "" msgid "Save" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number msgid "Select number of rows to duplicate row" @@ -790,11 +623,6 @@ msgstr "" msgid "Spreadsheet Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -812,17 +640,6 @@ msgstr "" msgid "Spreadsheets" msgstr "" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 @@ -848,17 +665,10 @@ msgid "Stacked Line" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" #. module: spreadsheet_oca @@ -886,21 +696,11 @@ msgstr "" msgid "Total rows used when inserting list" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 @@ -924,16 +724,6 @@ msgstr "" msgid "User" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -957,11 +747,6 @@ msgstr "" msgid "descending" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 diff --git a/spreadsheet_oca/i18n/zh_CN.po b/spreadsheet_oca/i18n/zh_CN.po index ed29c542..ae7a6c77 100644 --- a/spreadsheet_oca/i18n/zh_CN.po +++ b/spreadsheet_oca/i18n/zh_CN.po @@ -14,63 +14,36 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=1; plural=0;\n" -#. module: spreadsheet_oca -#: model:ir.model.constraint,message:spreadsheet_oca.constraint_spreadsheet_spreadsheet_tag_name_uniq -msgid "A tag with the same name already exists." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__active -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__active -msgid "Active" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_ids -msgid "Activities" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Activity Exception Decoration" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state -msgid "Activity State" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Activity Type Icon" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add date" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add relation" msgstr "" +#. module: spreadsheet_oca +#: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add_sheet +msgid "Add sheet to spreadsheet" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Add text" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/list_controller.xml:0 +#, python-format msgid "Add to spreadesheet" msgstr "" @@ -81,59 +54,42 @@ msgstr "" #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.xml:0 #: model:spreadsheet.spreadsheet.import.mode,name:spreadsheet_oca.spreadsheet_import_mode_add +#, python-format msgid "Add to spreadsheet" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "After next" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "Archived" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Are you sure you want to delete this list?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Area" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_attachment_count -msgid "Attachment Count" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Are you sure you want to delete this pivot?" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Automatically filter on the current period" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Automatically filter on the current user" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__badge_image -msgid "Badge Background" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Before Previous" msgstr "" @@ -142,16 +98,24 @@ msgstr "" msgid "Can Be Dynamic" msgstr "" +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__can_have_dynamic_cols +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__can_have_dynamic_cols +msgid "Can Have Dynamic Cols" +msgstr "" + #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_import_form_view +#, python-format msgid "Cancel" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Change name" msgstr "" @@ -166,17 +130,6 @@ msgstr "" msgid "Code" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Color" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Column" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__commands msgid "Commands" @@ -190,17 +143,15 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Comparisons in pivot are not supported" +#, python-format +msgid "Comparisons in pivot are not supprted" msgstr "" #. module: spreadsheet_oca -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_configuration_menu -msgid "Configuration" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Context" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Confirm" msgstr "" #. module: spreadsheet_oca @@ -224,7 +175,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_uid msgid "Created by" msgstr "" @@ -234,13 +184,13 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__create_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__create_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__create_date msgid "Created on" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format msgid "Currency" msgstr "" @@ -252,42 +202,62 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Default value" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view +#, python-format msgid "Delete" msgstr "" +#. module: spreadsheet_oca +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Dimensions" +msgstr "" + #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__display_name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__display_name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__display_name msgid "Display Name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Download XLSX" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js:0 -msgid "Duplicated groupbys in pivot are not supported" +#, python-format +msgid "Duplicated groupbys in pivot are not supprted" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__dynamic_cols +msgid "Dynamic Cols" +msgstr "" + +#. module: spreadsheet_oca +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols +msgid "Dynamic Columns" msgstr "" #. module: spreadsheet_oca @@ -298,7 +268,6 @@ msgstr "" #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_tree_view msgid "Edit" msgstr "" @@ -306,12 +275,14 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Edit domain" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "File" msgstr "" @@ -323,27 +294,14 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Filters" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_icon -msgid "Font awesome icon e.g. fa-tasks" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "From / To" msgstr "" @@ -352,41 +310,15 @@ msgstr "" msgid "Group" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__has_message -msgid "Has Message" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__id #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__id -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__id msgid "ID" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_icon -msgid "Icon to indicate an exception activity." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "If checked, some messages have a delivery error." -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__company_id msgid "" @@ -417,18 +349,15 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Include children" +#, python-format +msgid "Insert dynamic pivot" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Insert list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_is_follower -msgid "Is Follower" +#, python-format +msgid "Insert pivot" msgstr "" #. module: spreadsheet_oca @@ -439,6 +368,7 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Label" msgstr "" @@ -448,7 +378,6 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_uid #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_uid -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_uid msgid "Last Updated by" msgstr "" @@ -458,31 +387,27 @@ msgstr "" #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__write_date #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__write_date -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__write_date msgid "Last Updated on" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Last updated at" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Line" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Link to Odoo menu" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "List name" msgstr "" @@ -493,19 +418,17 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Menu Items" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error -msgid "Message Delivery error" +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format +msgid "Measures" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_ids -msgid "Messages" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 +#, python-format +msgid "Menu Items" msgstr "" #. module: spreadsheet_oca @@ -517,69 +440,48 @@ msgstr "" #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__model +#, python-format msgid "Model" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_ir_model -msgid "Models" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Month" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Month / Quarter" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__my_activity_date_deadline -msgid "My Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_search_view -msgid "My Sheets" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_abstract__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__name #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import_mode__name -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__name +#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Next" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_date_deadline -msgid "Next Activity Deadline" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_summary -msgid "Next Activity Summary" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_type_id -msgid "Next Activity Type" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id +msgid "Next Revision" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__next_revision_id -msgid "Next Revision" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_select_row_number__number_of_cols +msgid "Number Of Cols" msgstr "" #. module: spreadsheet_oca @@ -589,23 +491,8 @@ msgid "Number Of Rows" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_needaction_counter -msgid "Number of messages requiring action" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__message_has_error_counter -msgid "Number of messages with delivery error" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet_import__number_of_cols +msgid "Number of Columns" msgstr "" #. module: spreadsheet_oca @@ -614,51 +501,38 @@ msgid "OK" msgstr "" #. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id -msgid "Owner" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "Ownership" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_renderer.esm.js:0 +#, python-format +msgid "Odoo Spreadsheet" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Pie" +#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__owner_id +msgid "Owner" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Possible values" +#, python-format +msgid "Pivot name" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Previous" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Quarter" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Dynamic" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 -msgid "Re-insert Static" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Read Access" @@ -677,24 +551,28 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "Refresh all data" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Related model" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Relative Period" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Remove" msgstr "" @@ -703,40 +581,24 @@ msgstr "" msgid "Res" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_user_id -msgid "Responsible User" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Restrict values with a domain" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Rows:" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Save" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js:0 -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Select a menu..." +#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number +msgid "Select number of rows to duplicate row" msgstr "" #. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_select_row_number -msgid "Select number of rows to duplicate row" +#. odoo-javascript +#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format +msgid "Select the quantity of rows" msgstr "" #. module: spreadsheet_oca @@ -752,18 +614,21 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js:0 +#, python-format msgid "Settings" msgstr "" #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_abstract.py:0 +#, python-format msgid "Sheet1" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Sorting" msgstr "" @@ -791,11 +656,6 @@ msgstr "" msgid "Spreadsheet Revision" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model,name:spreadsheet_oca.model_spreadsheet_spreadsheet_tag -msgid "Spreadsheet Tag" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model,name:spreadsheet_oca.model_spreadsheet_abstract msgid "Spreadsheet abstract for inheritance" @@ -813,53 +673,18 @@ msgstr "" msgid "Spreadsheets" msgstr "" -#. module: spreadsheet_oca -#: model:ir.actions.act_window,name:spreadsheet_oca.spreadsheet_spreadsheet_tags_act_window -#: model:ir.ui.menu,name:spreadsheet_oca.spreadsheet_spreadsheet_tag_menu -msgid "Spreadsheets Tags" -msgstr "" - -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_kanban_view -msgid "Spreasheet Image" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Stacked" msgstr "" #. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Area" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Column" -msgstr "" - -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/odoo_panels.esm.js:0 -msgid "Stacked Line" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_state +#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_import__dynamic_cols msgid "" -"Status based on activities\n" -"Overdue: Due date is already passed\n" -"Today: Activity date is today\n" -"Planned: Future activities." -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__spreadsheet_tag_ids -msgid "Tags" +"This field allows you to generate tables that its cols are updated with the " +"filters set in the spreadsheets." msgstr "" #. module: spreadsheet_oca @@ -872,51 +697,40 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Time range" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Toggle Dropdown" msgstr "" -#. module: spreadsheet_oca -#. odoo-javascript -#: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 -msgid "Total rows used when inserting list" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet_tag__color -msgid "Transparent tags are not visible in the kanban view" -msgstr "" - #. module: spreadsheet_oca #: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_oca_revision__type msgid "Type" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__activity_exception_decoration -msgid "Type of the exception activity on record." -msgstr "" - #. module: spreadsheet_oca #. odoo-python #: code:addons/spreadsheet_oca/models/spreadsheet_spreadsheet.py:0 +#, python-format msgid "Unnamed" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.xml:0 +#, python-format msgid "Upload" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet_tree/spreadsheet_tree_view.esm.js:0 +#, python-format msgid "Upload a Spreadsheet" msgstr "" @@ -925,16 +739,6 @@ msgstr "" msgid "User" msgstr "" -#. module: spreadsheet_oca -#: model:ir.model.fields,field_description:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: spreadsheet_oca -#: model:ir.model.fields,help:spreadsheet_oca.field_spreadsheet_spreadsheet__website_message_ids -msgid "Website communication history" -msgstr "" - #. module: spreadsheet_oca #: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view msgid "Write Access" @@ -943,35 +747,35 @@ msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "Year" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "ascending" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "descending" msgstr "" -#. module: spreadsheet_oca -#: model_terms:ir.ui.view,arch_db:spreadsheet_oca.spreadsheet_spreadsheet_form_view -msgid "e.g. Sales KPI" -msgstr "" - #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml:0 +#, python-format msgid "name is required" msgstr "" #. module: spreadsheet_oca #. odoo-javascript #: code:addons/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js:0 +#, python-format msgid "not updated" msgstr "" diff --git a/spreadsheet_oca/models/__init__.py b/spreadsheet_oca/models/__init__.py index 3e07c12a..60d31886 100644 --- a/spreadsheet_oca/models/__init__.py +++ b/spreadsheet_oca/models/__init__.py @@ -1,6 +1,4 @@ -from . import ir_model from . import spreadsheet_abstract -from . import spreadsheet_spreadsheet_tag from . import spreadsheet_spreadsheet from . import spreadsheet_oca_revision from . import ir_websocket diff --git a/spreadsheet_oca/models/ir_model.py b/spreadsheet_oca/models/ir_model.py deleted file mode 100644 index 78b452d4..00000000 --- a/spreadsheet_oca/models/ir_model.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2026 Tecnativa - Carlos Roca -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import api, models - - -class IrModel(models.Model): - _inherit = "ir.model" - - @api.model - def has_parent_relation(self, model_name): - """Return if the model has a parent relation.""" - model = self.env.get(model_name) - if model is None or not model.has_access("read"): - return False - return model._parent_name in model._fields diff --git a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py b/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py deleted file mode 100644 index 9be5cf64..00000000 --- a/spreadsheet_oca/models/spreadsheet_spreadsheet_tag.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2022 CreuBlanca -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from random import randint - -from odoo import fields, models - - -class SpreadsheetSpreadsheetTags(models.Model): - _name = "spreadsheet.spreadsheet.tag" - _description = "Spreadsheet Tag" - - def _get_default_color(self): - return randint(1, 11) - - name = fields.Char(required=True, translate=True) - color = fields.Integer( - default=lambda self: self._get_default_color(), - help="Transparent tags are not visible in the kanban view", - ) - - _name_uniq = models.Constraint( - "unique (name)", - "A tag with the same name already exists.", - ) diff --git a/spreadsheet_oca/readme/CONTRIBUTORS.md b/spreadsheet_oca/readme/CONTRIBUTORS.md index e5a41e3d..b262cef9 100644 --- a/spreadsheet_oca/readme/CONTRIBUTORS.md +++ b/spreadsheet_oca/readme/CONTRIBUTORS.md @@ -2,6 +2,4 @@ - [Tecnativa](https://www.tecnativa.com): - Carlos Roca - [Open User Systems](https://www.openusersystems.com): - - Chris Mann -- [Mind And Go](https://mind-and-go.com) - - Florent THOMAS \ No newline at end of file + - Chris Mann \ No newline at end of file diff --git a/spreadsheet_oca/readme/ROADMAP.md b/spreadsheet_oca/readme/ROADMAP.md new file mode 100644 index 00000000..df941c4d --- /dev/null +++ b/spreadsheet_oca/readme/ROADMAP.md @@ -0,0 +1,6 @@ +## Adding new lines on pivot tables + +When we add a pivot table, the number of rows is predefined according to +the current data. + +In order to add new rows, we need to reinsert the pivot table. diff --git a/spreadsheet_oca/readme/USAGE.md b/spreadsheet_oca/readme/USAGE.md index 935707dc..ec8d7945 100644 --- a/spreadsheet_oca/readme/USAGE.md +++ b/spreadsheet_oca/readme/USAGE.md @@ -37,3 +37,35 @@ > - `ODOO.ACCOUNT.GROUP(type)`: Returns the account ids of a given > group where type should be a value of the `account_type` field of > `account.account` model. (`income`, `asset_receivable`, etc.) + +## **Create a new dynamic spreadsheet from pivot** + +- Go to any pivot +- Press on insert button +- Select the dynamic rows or dynamic columns option and set a number of + rows/columns + +A new table that will be updated with the actual or filtered values will +be added. + +- Note: When a pivot has multiple levels of aggrupations in the rows or + the columns, the number of rows/columns selected will be transfered to + each level. + + Example: number of groups -\> 2 number of rows -\> 3 + + - val1 + - subval1.1 + - subval1.2 + - subval1.3 + - val2 + - subval2.1 + - subval2.2 + - subval2.3 + - val3 + - subval3.1 + - subval3.2 + - subval3.3 + +Here is a visual exaple of use: .. figure:: +../static/description/spreadsheetdynamic_table.gif diff --git a/spreadsheet_oca/security/ir.model.access.csv b/spreadsheet_oca/security/ir.model.access.csv index 1898b166..f25d2e12 100644 --- a/spreadsheet_oca/security/ir.model.access.csv +++ b/spreadsheet_oca/security/ir.model.access.csv @@ -4,5 +4,3 @@ access_spreadsheet_oca_revision,access_spreadsheet_oca_revision,model_spreadshee spreadsheet_oca.access_spreadsheet_spreadsheet_import,access_spreadsheet_spreadsheet_import,spreadsheet_oca.model_spreadsheet_spreadsheet_import,base.group_user,1,1,1,1 access_spreadsheet_import_mode,access_spreadsheet_oca_revision,model_spreadsheet_spreadsheet_import_mode,base.group_user,1,0,0,0 access_spreadsheet_select_row_number,access_spreadsheet_select_row_number,model_spreadsheet_select_row_number,base.group_user,1,1,1,1 -access_spreadsheet_spreadsheet_tag,access_spreadsheet_spreadsheet_tag,model_spreadsheet_spreadsheet_tag,spreadsheet_oca.group_user,1,0,0,0 -access_spreadsheet_spreadsheet_manager_tag,access_spreadsheet_spreadsheet_manager_tag,model_spreadsheet_spreadsheet_tag,spreadsheet_oca.group_manager,1,1,1,1 diff --git a/spreadsheet_oca/static/description/index.html b/spreadsheet_oca/static/description/index.html index b15a6ee8..a8a2ccc5 100644 --- a/spreadsheet_oca/static/description/index.html +++ b/spreadsheet_oca/static/description/index.html @@ -372,7 +372,7 @@

    Spreadsheet Oca

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:afa8556b48ef425ac88f6fa7b69a9f5d76aaef94958f9ce0e14e0efd97024dc0 +!! source digest: sha256:626dcf82bf0ff302572c1c912e4bc95b14e7622c174a5449734cfd8e6ddc4efc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

    Beta License: AGPL-3 OCA/spreadsheet Translate me on Weblate Try me on Runboat

    This module adds a functionality for adding and editing Spreadsheets @@ -384,14 +384,19 @@

    Spreadsheet Oca

    +
    +

    Create a new dynamic spreadsheet from pivot

    +
      +
    • Go to any pivot
    • +
    • Press on insert button
    • +
    • Select the dynamic rows or dynamic columns option and set a number of +rows/columns
    • +
    +

    A new table that will be updated with the actual or filtered values will +be added.

    +
      +
    • Note: When a pivot has multiple levels of aggrupations in the rows or +the columns, the number of rows/columns selected will be transfered to +each level.

      +

      Example: number of groups -> 2 number of rows -> 3

      +
        +
      • val1
          +
        • subval1.1
        • +
        • subval1.2
        • +
        • subval1.3
        • +
        +
      • +
      • val2
          +
        • subval2.1
        • +
        • subval2.2
        • +
        • subval2.3
        • +
        +
      • +
      • val3
          +
        • subval3.1
        • +
        • subval3.2
        • +
        • subval3.3
        • +
        +
      • +
      +
    • +
    +

    https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/Hhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/vhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/xhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ahttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/phttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/lhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ohttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/shttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/.https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/fhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ihttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ghttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/uhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/rhttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ehttps://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/:https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/ +https://raw.githubusercontent.com/OCA/spreadsheet/19.0/spreadsheet_oca/../static/description/spreadsheetdynamic_table.gif

    +
    -

    Development

    +

    Development

    If you want to develop custom business functions, you can add others, based on the file https://github.com/odoo/odoo/blob/16.0/addons/spreadsheet_account/static/src/accounting_functions.js

    +
    +

    Known issues / Roadmap

    +
    +

    Adding new lines on pivot tables

    +

    When we add a pivot table, the number of rows is predefined according to +the current data.

    +

    In order to add new rows, we need to reinsert the pivot table.

    +
    +
    -

    Bug Tracker

    +

    Bug Tracker

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -461,15 +515,15 @@

    Bug Tracker

    Do not contact contributors directly about support or help with technical issues.

    -

    Credits

    +

    Credits

    -

    Authors

    +

    Authors

    • CreuBlanca
    -

    Contributors

    +

    Contributors

    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association diff --git a/spreadsheet_oca/static/src/pivot/pivot_table.esm.js b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js new file mode 100644 index 00000000..0ce658c8 --- /dev/null +++ b/spreadsheet_oca/static/src/pivot/pivot_table.esm.js @@ -0,0 +1,66 @@ +/* Copyright 2024 Tecnativa - Carlos Roca + * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ +import {SpreadsheetPivotTable} from "@odoo/o-spreadsheet"; +import {patch} from "@web/core/utils/patch"; + +patch(SpreadsheetPivotTable.prototype, { + get _dynamic_cols() { + return this._cols[this._cols.length - 1] === "dynamic_cols"; + }, + getNumberOfMeasures() { + if (this._dynamic_cols) { + // We have disabled the computation of the last column to prevent showing + // the totalization of the columns when they are of a dynamic type. If + // shown, it would display the total of all records corresponding to the + // row, rather than what is being displayed on the screen. + return 1; + } + return this._super(...arguments); + }, + getColHeaders() { + if (this._dynamic_cols) { + // We return a copy of this._cols without the last entry of the array, + // which indicates that these are dynamic columns. + var cols = [...this._cols]; + cols.pop(); + return cols; + } + return this._super(...arguments); + }, + getMeasureHeaders() { + if (this._dynamic_cols) { + return this._cols[this._cols.length - 2]; + } + return this._super(...arguments); + }, + getColWidth() { + if (this._dynamic_cols) { + return this._cols[this._cols.length - 2].length; + } + return this._super(...arguments); + }, + getColHeight() { + if (this._dynamic_cols) { + return this._cols.length - 1; + } + return this._super(...arguments); + }, + getColMeasureIndex(values) { + if (this._dynamic_cols) { + var cols = [...this._cols]; + cols.pop(); + const vals = JSON.stringify(values); + const maxLength = Math.max(...cols.map((col) => col.length)); + for (let i = 0; i < maxLength; i++) { + const cellValues = cols.map((col) => + JSON.stringify((col[i] || {}).values) + ); + if (cellValues.includes(vals)) { + return i; + } + } + return -1; + } + return this._super(...arguments); + }, +}); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js index 41407c51..b6a1d23b 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panel.esm.js @@ -1,67 +1,41 @@ import * as spreadsheet from "@odoo/o-spreadsheet"; import {patch} from "@web/core/utils/patch"; -import {onWillUpdateProps} from "@odoo/owl"; -const {chartSubtypeRegistry} = spreadsheet.registries; -const {ChartTypePicker} = spreadsheet.components; +const {chartRegistry} = spreadsheet.registries; +const {ChartPanel} = spreadsheet.components; +export function isOdooKey(code) { + return code.startsWith("odoo_"); +} -const ODOO_PREFIX = "odoo_"; -const isOdooKey = (key) => key?.startsWith(ODOO_PREFIX); - -const groupByCategory = (items) => - items.reduce((acc, item) => { - (acc[item.category] ||= []).push(item); - return acc; - }, {}); - -const getFigureDefinition = (env, figureId) => - env.model.getters.getChartDefinition(figureId); - -patch(ChartTypePicker.prototype, { - setup() { - super.setup(); - const refresh = (figureId) => this.filterCategoriesChartType(figureId); - refresh(this.props.figureId); - onWillUpdateProps((nextProps) => refresh(nextProps.figureId)); +patch(ChartPanel.prototype, { + get chartTypes() { + return this.filterChartTypes(isOdooKey(this.getChartDefinition().type)); }, - getChartTypes(isOdoo) { - const result = {}; - for (const key of chartSubtypeRegistry.getKeys()) { - if (isOdoo === isOdooKey(key)) { - result[key] = chartSubtypeRegistry.get(key).name; + filterChartTypes(isOdoo) { + var result = {}; + for (const key of chartRegistry.getKeys()) { + if ((isOdoo && isOdooKey(key)) || (!isOdoo && !isOdooKey(key))) { + result[key] = chartRegistry.get(key).name; } } return result; }, onTypeChange(type) { - const {env} = this; - const figureId = this.props.figureId; - const current = getFigureDefinition(env, figureId); - if (!isOdooKey(current.type)) { - return super.onTypeChange(type); + if (isOdooKey(this.getChartDefinition().type)) { + const definition = { + stacked: false, + verticalAxisPosition: "left", + ...this.env.model.getters.getChartDefinition(this.figureId), + type, + }; + this.env.model.dispatch("UPDATE_CHART", { + definition, + id: this.figureId, + sheetId: this.env.model.getters.getActiveSheetId(), + }); + } else { + super.onTypeChange(type); } - const newChartInfo = chartSubtypeRegistry.get(type); - const definition = { - verticalAxisPosition: "left", - ...current, - ...newChartInfo.subtypeDefinition, - type: newChartInfo.chartType, - }; - env.model.dispatch("UPDATE_CHART", { - definition, - id: figureId, - sheetId: env.model.getters.getActiveSheetId(), - }); - this.closePopover(); - }, - filterCategoriesChartType(figureId) { - const {env} = this; - const definition = getFigureDefinition(env, figureId); - const isOdoo = isOdooKey(definition.type); - const registryItems = chartSubtypeRegistry - .getAll() - .filter((item) => isOdoo === isOdooKey(item.chartType)); - this.chartTypeByCategories = groupByCategory(registryItems); }, }); diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js index 7f1977ff..e42f6706 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/chart_panels.esm.js @@ -13,21 +13,25 @@ const { GaugeChartConfigPanel, } = spreadsheet.components; -const menuChartProps = () => ({ +const menuChartProps = { setup() { super.setup(...arguments); this.menus = useService("menu"); }, get menuProps() { - return { + const menu = this.env.model.getters.getChartOdooMenu(this.props.figureId); + var result = { fieldString: _t("Menu Items"), resModel: "ir.ui.menu", update: this.updateMenu.bind(this), activeActions: {}, getDomain: this.getDomain.bind(this), - placeholder: _t("Select a menu..."), - value: this.menuId ? this.menuId[1] : "", }; + if (menu) { + result.value = menu.name; + result.id = menu.id; + } + return result; }, getDomain() { @@ -72,33 +76,33 @@ const menuChartProps = () => ({ }, }; }, -}); +}; -patch(GenericChartConfigPanel.prototype, menuChartProps()); +patch(GenericChartConfigPanel.prototype, menuChartProps); GenericChartConfigPanel.components = { ...GenericChartConfigPanel.components, Many2XAutocomplete, }; -patch(LineConfigPanel.prototype, menuChartProps()); +patch(LineConfigPanel.prototype, menuChartProps); LineConfigPanel.components = { ...LineConfigPanel.components, Many2XAutocomplete, }; -patch(BarConfigPanel.prototype, menuChartProps()); +patch(BarConfigPanel.prototype, menuChartProps); BarConfigPanel.components = { ...BarConfigPanel.components, Many2XAutocomplete, }; -patch(ScorecardChartConfigPanel.prototype, menuChartProps()); +patch(ScorecardChartConfigPanel.prototype, menuChartProps); ScorecardChartConfigPanel.components = { ...ScorecardChartConfigPanel.components, Many2XAutocomplete, }; -patch(GaugeChartConfigPanel.prototype, menuChartProps()); +patch(GaugeChartConfigPanel.prototype, menuChartProps); GaugeChartConfigPanel.components = { ...GaugeChartConfigPanel.components, Many2XAutocomplete, diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js index 5cb7daa5..2f0b150a 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter.esm.js @@ -4,6 +4,7 @@ import {Component, onWillStart, useState} from "@odoo/owl"; import {FilterValue} from "@spreadsheet/global_filters/components/filter_value/filter_value"; import {ModelFieldSelector} from "@web/core/model_field_selector/model_field_selector"; import {ModelSelector} from "@web/core/model_selector/model_selector"; + import {_t} from "@web/core/l10n/translation"; import { RELATIVE_PERIODS, diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js index 4cb6a1aa..51cf2599 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/filter_panel_datasources.esm.js @@ -61,14 +61,8 @@ export class PivotPanelDisplay extends Component { const sortedColumn = this.props.pivotDefinition.sortedColumn; const orderTranslate = sortedColumn.order === "asc" ? _t("ascending") : _t("descending"); - - let label = null; - if (sortedColumn.measure) { - const measure = this.PivotDataSource.getMeasure(sortedColumn.measure); - label = measure ? measure.displayName : sortedColumn.measure; - } else if (sortedColumn.groupBy) { - label = this.PivotDataSource.getFormattedGroupBy(sortedColumn.groupBy); - } + const measure = this.PivotDataSource.getMeasure(sortedColumn.measure); + const label = measure ? measure.displayName : sortedColumn.measure; return `${label} (${orderTranslate})`; } get lastUpdate() { @@ -178,9 +172,13 @@ PivotPanel.components = { PivotPanelDisplay, }; -pivotSidePanelRegistry.add("ODOO", { - editor: PivotPanel, -}); +pivotSidePanelRegistry.add( + "ODOO", + { + editor: PivotPanel, + }, + {force: true} +); export class ListPanelDisplay extends Component { setup() { diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml index 40110bcd..242124ba 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet.xml @@ -14,30 +14,28 @@ - + -
    - - -
    -
    Model
    -
    ( +
    +
    Pivot name
    + +
    +
    +
    Model
    +
    ()
    -
    -
    Domain
    +
    +
    Domain
    @@ -45,22 +43,50 @@ Edit domain
    - -
    -
    Sorting
    +
    +
    Dimensions
    + +
    + +
    +
    +
    Sorting
    -
    +
    +
    Measures
    + +
    + +
    +
    + + + +
    +
    Last updated at
    @@ -243,75 +269,17 @@ t-model="state.defaultValue" />
    - -
    -
    Related model
    -
    - -
    - +
    Related model
    +
    +
    - -
    -
    Default value
    -
    - -
    -
    - -
    -
    -
    -
    Possible values
    -
    - -
    - - - - -
    -
    - +
    -
    +
    diff --git a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js index 817240c0..fa98b563 100644 --- a/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/bundle/spreadsheet_action.esm.js @@ -255,7 +255,7 @@ export class ActionSpreadsheetOca extends Component { }); const ds = spreadsheet_model.getters.getPivot(pivotId); await ds.load(); - const table = ds.getExpandedTableStructure(); + const table = ds.getTableStructure(); spreadsheet_model.dispatch("INSERT_PIVOT_WITH_TABLE", { sheetId, col: 0, @@ -292,6 +292,4 @@ ActionSpreadsheetOca.components = { SpreadsheetControlPanel, }; ActionSpreadsheetOca.props = {...standardActionServiceProps}; -actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, { - force: true, -}); +actionRegistry.add("action_spreadsheet_oca", ActionSpreadsheetOca, {force: true}); diff --git a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js index 4fe34251..04238fa6 100644 --- a/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/graph_controller.esm.js @@ -12,11 +12,10 @@ patch(GraphRenderer.prototype, { default_datasource_name: this.model.metaData.title, default_import_data: { mode: "graph", - metaData: this.model.metaData, - searchParams: { - ...this.model.searchParams, - domain: this.env.searchModel.domainString, - }, + metaData: JSON.parse(JSON.stringify(this.model.metaData)), + searchParams: JSON.parse( + JSON.stringify(this.model.searchParams) + ), }, }, } diff --git a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js index 9ead5d58..beccbe38 100644 --- a/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/list_renderer.esm.js @@ -32,7 +32,7 @@ patch(ListRenderer.prototype, { mode: "list", metaData: { model: model.resModel, - domain: this.env.searchModel.domainString, + domain: model.domain, orderBy: model.orderBy, context: omit( model.searchParams?.context || {}, diff --git a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js index 54e68e6f..7b787a73 100644 --- a/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js +++ b/spreadsheet_oca/static/src/spreadsheet/pivot_controller.esm.js @@ -52,13 +52,15 @@ patch(PivotRenderer.prototype, { default_name: this.model.metaData.title, default_datasource_name: this.model.metaData.title, default_can_be_dynamic: false, + default_can_have_dynamic_cols: false, + // Default_can_be_dynamic: true, + // default_can_have_dynamic_cols: this.containsColGroupBys(), default_import_data: { mode: "pivot", - metaData: this.model.metaData, - searchParams: { - ...this.model.searchParams, - domain: this.env.searchModel.domainString, - }, + metaData: JSON.parse(JSON.stringify(this.model.metaData)), + searchParams: JSON.parse( + JSON.stringify(this.model.searchParams) + ), }, }, } diff --git a/spreadsheet_oca/static/src/spreadsheet/utils/dynamic_generators.esm.js b/spreadsheet_oca/static/src/spreadsheet/utils/dynamic_generators.esm.js new file mode 100644 index 00000000..85e60cb5 --- /dev/null +++ b/spreadsheet_oca/static/src/spreadsheet/utils/dynamic_generators.esm.js @@ -0,0 +1,104 @@ +/* Copyright 2024 Tecnativa - Carlos Roca + * License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */ + +/** + * Calculates the rows to calculate the dynamic values. This can be used to make + * a top of data. + * + * When the rows has just a indentation of 1, the number of rows will be the + * final result. + * + * Example: + * number_of_rows = 2 + * max_indentation = 1 + * - first element + * - second element + * + * The pivot allows to increase the indentation, when it happens, the number of + * rows will be propagated to each indentation. + * + * Example: + * number_of_rows = 2 + * max_indentation = 2 + * - first element + * - first subelement + * - second subelement + * - second element + * - first subelement + * - second subelement + * + * @param {Array} fields + * @param {Number} number_of_rows + * @param {Number} indent + * @param {Number} max_indentation + * @param {Array} parent_indexes + * @returns {Array} + */ +export function makeDynamicRows( + fields, + number_of_rows, + indent, + max_indentation, + parent_indexes = [] +) { + var rows = []; + for (var index = 1; index <= number_of_rows; index++) { + rows.push({ + fields: fields.map((f) => (f.startsWith("#") ? f : `#${f}`)), + indent: indent, + values: [...parent_indexes, index.toString()], + }); + if (indent < max_indentation) { + rows = rows.concat( + makeDynamicRows(fields, number_of_rows, indent + 1, max_indentation, [ + ...parent_indexes, + index.toString(), + ]) + ); + } + } + return rows; +} + +/** + * + * @param {Array} fields + * @param {Number} number_of_cols + * @param {Number} measures + * @param {Number} max_indentation + * @param {Array} parent_indexes + * @returns {Array} + */ +export function makeDynamicCols(fields, number_of_cols, measures) { + // Default to at least one empty measure if none provided + const effectiveMeasures = measures?.length ? measures : [""]; + const groupColumns = []; + const measureColumns = []; + + for (let colNum = 1; colNum <= number_of_cols; colNum++) { + // Create a group column for each field combination + const groupColumn = { + fields: fields?.length + ? fields.map((f) => (f.startsWith("#") ? f : `#${f}`)) + : [], + values: fields?.length ? Array(fields.length).fill(colNum.toString()) : [], + width: 1, + offset: fields?.length || 1, + }; + groupColumns.push(groupColumn); + + // Create corresponding measure columns for each group + effectiveMeasures.forEach((measure) => { + if (fields?.length) { + measureColumns.push({ + fields: [...fields.map((f) => `#${f}`), "measure"], + values: [...fields.map(() => colNum.toString()), measure || ""], + width: 1, + offset: fields.length + 1, + }); + } + }); + } + + return [groupColumns, measureColumns]; +} diff --git a/spreadsheet_oca/wizards/spreadsheet_select_row_number.py b/spreadsheet_oca/wizards/spreadsheet_select_row_number.py index 357c372a..51bb580b 100644 --- a/spreadsheet_oca/wizards/spreadsheet_select_row_number.py +++ b/spreadsheet_oca/wizards/spreadsheet_select_row_number.py @@ -10,3 +10,6 @@ class SpreadsheetSelectRowNumber(models.TransientModel): dynamic_rows = fields.Boolean() number_of_rows = fields.Integer() + can_have_dynamic_cols = fields.Boolean() + dynamic_cols = fields.Boolean() + number_of_cols = fields.Integer() diff --git a/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml b/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml index d3e8be09..538c0756 100644 --- a/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml +++ b/spreadsheet_oca/wizards/spreadsheet_select_row_number.xml @@ -9,6 +9,12 @@ + + + diff --git a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.py b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.py index 92a68e13..6db07da8 100644 --- a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.py +++ b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.py @@ -23,13 +23,20 @@ def _default_mode_id(self): import_data = fields.Serialized() spreadsheet_id = fields.Many2one("spreadsheet.spreadsheet") can_be_dynamic = fields.Boolean() + can_have_dynamic_cols = fields.Boolean() is_tree = fields.Boolean() dynamic = fields.Boolean( "Dynamic Rows", help="This field allows you to generate tables that its rows are updated with" " the filters set in the spreadsheets.", ) + dynamic_cols = fields.Boolean( + "Dynamic Columns", + help="This field allows you to generate tables that its cols are updated with" + " the filters set in the spreadsheets.", + ) number_of_rows = fields.Integer() + number_of_cols = fields.Integer("Number of Columns") def insert_pivot(self): self.ensure_one() @@ -47,6 +54,8 @@ def _insert_pivot_new(self): import_data["new"] = 1 if self.dynamic: import_data["dyn_number_of_rows"] = self.number_of_rows + if self.dynamic_cols: + import_data["dyn_number_of_cols"] = self.number_of_cols return { "type": "ir.actions.client", "tag": "action_spreadsheet_oca", @@ -57,11 +66,14 @@ def _insert_pivot_new(self): }, } - def _insert_pivot_add(self): + def _insert_pivot_add(self, new_sheet=False): import_data = self.import_data import_data["name"] = self.datasource_name + import_data["new_sheet"] = new_sheet if self.dynamic: import_data["dyn_number_of_rows"] = self.number_of_rows + if self.dynamic_cols: + import_data["dyn_number_of_cols"] = self.number_of_cols return { "type": "ir.actions.client", "tag": "action_spreadsheet_oca", @@ -71,3 +83,6 @@ def _insert_pivot_add(self): "import_data": import_data, }, } + + def _insert_pivot_add_sheet(self): + return self._insert_pivot_add(True) diff --git a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml index aaff82c3..04bdd272 100644 --- a/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml +++ b/spreadsheet_oca/wizards/spreadsheet_spreadsheet_import.xml @@ -28,6 +28,7 @@ options="{'no_create': True}" /> + + +