summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/set_view_track.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website/static/src/js/set_view_track.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website/static/src/js/set_view_track.js')
-rw-r--r--addons/website/static/src/js/set_view_track.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/addons/website/static/src/js/set_view_track.js b/addons/website/static/src/js/set_view_track.js
new file mode 100644
index 00000000..d94fcddf
--- /dev/null
+++ b/addons/website/static/src/js/set_view_track.js
@@ -0,0 +1,89 @@
+odoo.define('website.set_view_track', function (require) {
+"use strict";
+
+var CustomizeMenu = require('website.customizeMenu');
+var Widget = require('web.Widget');
+
+var TrackPage = Widget.extend({
+ template: 'website.track_page',
+ xmlDependencies: ['/website/static/src/xml/track_page.xml'],
+ events: {
+ 'change #switch-track-page': '_onTrackChange',
+ },
+
+ /**
+ * @override
+ */
+ start: function () {
+ this.$input = this.$('#switch-track-page');
+ this._isTracked().then((data) => {
+ if (data[0]['track']) {
+ this.track = true;
+ this.$input.attr('checked', 'checked');
+ } else {
+ this.track = false;
+ }
+ });
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ */
+ _isTracked: function (val) {
+ var viewid = $('html').data('viewid');
+ if (!viewid) {
+ return Promise.reject();
+ } else {
+ return this._rpc({
+ model: 'ir.ui.view',
+ method: 'read',
+ args: [[viewid], ['track']],
+ });
+ }
+ },
+ /**
+ * @private
+ */
+ _onTrackChange: function (ev) {
+ var checkboxValue = this.$input.is(':checked');
+ if (checkboxValue !== this.track) {
+ this.track = checkboxValue;
+ this._trackPage(checkboxValue);
+ }
+ },
+ /**
+ * @private
+ */
+ _trackPage: function (val) {
+ var viewid = $('html').data('viewid');
+ if (!viewid) {
+ return Promise.reject();
+ } else {
+ return this._rpc({
+ model: 'ir.ui.view',
+ method: 'write',
+ args: [[viewid], {track: val}],
+ });
+ }
+ },
+});
+
+CustomizeMenu.include({
+ _loadCustomizeOptions: function () {
+ var self = this;
+ var def = this._super.apply(this, arguments);
+ return def.then(function () {
+ if (!self.__trackpageLoaded) {
+ self.__trackpageLoaded = true;
+ self.trackPage = new TrackPage(self);
+ self.trackPage.appendTo(self.$el.children('.dropdown-menu'));
+ }
+ });
+ },
+});
+
+});