summaryrefslogtreecommitdiff
path: root/addons/website_slides/static/src/js/slides.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_slides/static/src/js/slides.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_slides/static/src/js/slides.js')
-rw-r--r--addons/website_slides/static/src/js/slides.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/addons/website_slides/static/src/js/slides.js b/addons/website_slides/static/src/js/slides.js
new file mode 100644
index 00000000..4f081013
--- /dev/null
+++ b/addons/website_slides/static/src/js/slides.js
@@ -0,0 +1,124 @@
+odoo.define('website_slides.slides', function (require) {
+'use strict';
+
+var publicWidget = require('web.public.widget');
+var time = require('web.time');
+
+publicWidget.registry.websiteSlides = publicWidget.Widget.extend({
+ selector: '#wrapwrap',
+
+ /**
+ * @override
+ * @param {Object} parent
+ */
+ start: function (parent) {
+ var defs = [this._super.apply(this, arguments)];
+
+ _.each($("timeago.timeago"), function (el) {
+ var datetime = $(el).attr('datetime');
+ var datetimeObj = time.str_to_datetime(datetime);
+ // if presentation 7 days, 24 hours, 60 min, 60 second, 1000 millis old(one week)
+ // then return fix formate string else timeago
+ var displayStr = '';
+ if (datetimeObj && new Date().getTime() - datetimeObj.getTime() > 7 * 24 * 60 * 60 * 1000) {
+ displayStr = moment(datetimeObj).format('ll');
+ } else {
+ displayStr = moment(datetimeObj).fromNow();
+ }
+ $(el).text(displayStr);
+ });
+
+ return Promise.all(defs);
+ },
+});
+
+return publicWidget.registry.websiteSlides;
+
+});
+
+//==============================================================================
+
+odoo.define('website_slides.slides_embed', function (require) {
+'use strict';
+
+var publicWidget = require('web.public.widget');
+require('website_slides.slides');
+
+var SlideSocialEmbed = publicWidget.Widget.extend({
+ events: {
+ 'change input': '_onChangePage',
+ },
+ /**
+ * @constructor
+ * @param {Object} parent
+ * @param {Number} maxPage
+ */
+ init: function (parent, maxPage) {
+ this._super.apply(this, arguments);
+ this.max_page = maxPage || false;
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * @param {Number} page
+ */
+ _updateEmbeddedCode: function (page) {
+ var $embedInput = this.$('.slide_embed_code');
+ var newCode = $embedInput.val().replace(/(page=).*?([^\d]+)/, '$1' + page + '$2');
+ $embedInput.val(newCode);
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * @param {Object} ev
+ */
+ _onChangePage: function (ev) {
+ ev.preventDefault();
+ var input = this.$('input');
+ var page = parseInt(input.val());
+ if (this.max_page && !(page > 0 && page <= this.max_page)) {
+ page = 1;
+ }
+ this._updateEmbeddedCode(page);
+ },
+});
+
+publicWidget.registry.websiteSlidesEmbed = publicWidget.Widget.extend({
+ selector: '#wrapwrap',
+
+ /**
+ * @override
+ * @param {Object} parent
+ */
+ start: function (parent) {
+ var defs = [this._super.apply(this, arguments)];
+ $('iframe.o_wslides_iframe_viewer').on('ready', this._onIframeViewerReady.bind(this));
+ return Promise.all(defs);
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @private
+ * @param {Event} ev
+ */
+ _onIframeViewerReady: function (ev) {
+ // TODO : make it work. For now, once the iframe is loaded, the value of #page_count is
+ // still now set (the pdf is still loading)
+ var $iframe = $(ev.currentTarget);
+ var maxPage = $iframe.contents().find('#page_count').val();
+ new SlideSocialEmbed(this, maxPage).attachTo($('.oe_slide_js_embed_code_widget'));
+ },
+});
+
+});