summaryrefslogtreecommitdiff
path: root/addons/web_planner/static/src/js
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2017-10-26 13:48:07 +0200
committerYannick Tivisse <yti@odoo.com>2017-10-26 16:14:21 +0200
commit7ed9a7fabeb613bf8b2c2980190399e8f9bbaa2b (patch)
treec209b714375213a90f050098a5a51b7a9f275433 /addons/web_planner/static/src/js
parent89dda04c48ca19341abc318aed385d4778ba9e62 (diff)
[REM] web_planner: Remove the module
Purpose ======= User tests have been made by the Product Owners team. It showed that the planners are not used by new users on Odoo due to several reasons (They are too static, too heavy to use,...) Specification ============= Remove the module and its different applications. The onboarding on the business flow will be improvement in the weeks to come.
Diffstat (limited to 'addons/web_planner/static/src/js')
-rw-r--r--addons/web_planner/static/src/js/web_planner_backend.js48
-rw-r--r--addons/web_planner/static/src/js/web_planner_common.js432
2 files changed, 0 insertions, 480 deletions
diff --git a/addons/web_planner/static/src/js/web_planner_backend.js b/addons/web_planner/static/src/js/web_planner_backend.js
deleted file mode 100644
index f05f34b1477..00000000000
--- a/addons/web_planner/static/src/js/web_planner_backend.js
+++ /dev/null
@@ -1,48 +0,0 @@
-odoo.define('web.planner', function (require) {
-"use strict";
-
-var core = require('web.core');
-var SystrayMenu = require('web.SystrayMenu');
-var planner = require('web.planner.common');
-var session = require('web.session');
-
-var PlannerLauncher = planner.PlannerLauncher.extend({
- start: function() {
- core.bus.on("change_menu_section", this, this.on_menu_clicked);
- return $.when(this._super.apply(this, arguments), this._loadPlannerDef);
- },
- _fetch_planner_data: function () {
- var planner_by_menu = this.planner_by_menu = {};
- return this._rpc({
- model: 'web.planner',
- method: 'search_read',
- })
- .then(function (records) {
- _.each(records, function (planner) {
- planner.data = $.parseJSON(planner.data) || {};
- planner_by_menu[planner.menu_id[0]] = planner;
- });
- });
- },
- on_menu_clicked: function (menu_id) {
- if (this.planner_by_menu[menu_id]) {
- this._setup_for_planner(this.planner_by_menu[menu_id]);
- } else {
- this.do_hide();
- }
- },
- _update_parent_progress_bar: function (percent) {
- this._super.apply(this, arguments);
- this.do_show();
- },
-});
-
-if (session.is_system) {
- SystrayMenu.Items.push(PlannerLauncher);
-}
-
-return {
- PlannerLauncher: PlannerLauncher,
-};
-
-});
diff --git a/addons/web_planner/static/src/js/web_planner_common.js b/addons/web_planner/static/src/js/web_planner_common.js
deleted file mode 100644
index 33a7b8b337d..00000000000
--- a/addons/web_planner/static/src/js/web_planner_common.js
+++ /dev/null
@@ -1,432 +0,0 @@
-odoo.define('web.planner.common', function (require) {
-"use strict";
-
-var core = require('web.core');
-var Dialog = require('web.Dialog');
-var dom = require('web.dom');
-var rpc = require('web.rpc');
-var session = require('web.session');
-var utils = require('web.utils');
-var Widget = require('web.Widget');
-
-var QWeb = core.qweb;
-
-var _t = core._t;
-
-var MIN_PROGRESS = 7;
-
-var Page = core.Class.extend({
- init: function (dom, page_index) {
- this.$dom = $(dom);
- this.hide_from_menu = this.$dom.attr('hide-from-menu');
- this.hide_mark_as_done = this.$dom.attr('hide-mark-as-done');
- this.done = false;
- this.menu_item = null;
- this.title = this.$dom.find('[data-menutitle]').data('menutitle');
- this.set_page_id(this.title.replace(/\s/g, '') + page_index);
- },
- set_page_id: function (id) {
- this.id = id;
- this.$dom.attr('id', id);
- },
- get_category_name: function (category_selector) {
- return this.$dom.parents(category_selector).attr('menu-category-id');
- },
-});
-
-var PlannerDialog = Dialog.extend({
- template: "PlannerDialog",
- category_selector: "div[menu-category-id]",
- events: {
- "click li a[href^=\"#\"]:not([data-toggle=\"collapse\"])": function (e) {
- e.preventDefault();
- this._display_page($(e.currentTarget).attr("href").replace("#", ""));
- },
- "click a[href^=\"#show_enterprise\"]": function (e) {
- e.preventDefault();
- this.show_enterprise();
- },
- },
- init: function (parent, options, planner) {
- this._super.apply(this, arguments);
-
- this.planner = planner;
- this.cookie_name = this.planner.planner_application + '_last_page';
- this.pages = [];
- this.menu_items = [];
- this.currently_shown_page = null;
- this.currently_active_menu_item = null,
-
- this.on("change:progress", this, function () {
- this.trigger('planner_progress_changed', this.get('progress'));
- });
- this.set("progress", this.planner.progress || MIN_PROGRESS);
- },
- /**
- * Fetch the planner's rendered template
- */
- willStart: function() {
- var def = rpc.query({
- model: 'web.planner',
- method: 'render',
- args: [this.planner.view_id[0], this.planner.planner_application],
- context: session.user_context,
- })
- .then((function (template) {
- this.$template = $(template);
- }).bind(this));
-
- return $.when(this._super.apply(this, arguments), def);
- },
- start: function() {
- this.$modal.addClass("o_planner_dialog");
- this.$template.find(".o_planner_page").addBack(".o_planner_page").each((function (index, dom_page) {
- this.pages.push(new Page(dom_page, index));
- }).bind(this));
-
- this.$menu = this.$('> .o_planner_menu');
- this.$menu.html(this._render_menu());
- this.menu_items = this.$menu.find("li");
- _.each(this.pages, (function (page) {
- page.menu_item = this._find_menu_item_by_page_id(page.id);
- }).bind(this));
-
- this.$el.append(this.$template);
-
- // update the planner_data with the new inputs of the view
- var actual_vals = this._get_values();
- this.planner.data = _.defaults(this.planner.data, actual_vals);
- // set the default value
- this._set_values(this.planner.data);
- // show last opened page
- this._show_last_open_page();
-
- this.on("planner_progress_changed", this, this._update_title);
- this._update_title();
-
- this.prepare_planner_event();
-
- return this._super.apply(this, arguments);
- },
- prepare_planner_event: function () {}, // overriden by modules
- toggle_current_page_status: function () {
- this.currently_shown_page.done = !this.currently_shown_page.done;
- this._render_page_status(this.currently_shown_page, true);
- this._update_buttons();
- this._update_planner();
- },
- change_to_next_page: function (ev) {
- ev.preventDefault();
- this._display_page(this._get_next_page_id());
- },
- _update_title: function () {
- this.set_title(core.qweb.render("PlannerDialog.Title", {
- title: this.currently_shown_page.title,
- percent: this.get("progress")
- }));
- },
- _update_buttons: function () {
- var page = this.currently_shown_page;
- var buttons = [];
- if (!page.hide_mark_as_done) {
- buttons.push({
- text: _t("Mark As Done"),
- icon: page.done ? "fa-check-square-o" : "fa-square-o",
- classes: "o_mark_as_done btn-" + (page.done ? "default" : "primary"),
- click: this.toggle_current_page_status
- });
- }
- if (this._get_next_page_id()) {
- buttons.push({
- text: _t("Next Step"),
- icon: "fa-angle-right pull-right mt4",
- classes: "o_next_step btn-" + ((page.done || page.hide_mark_as_done) ? "primary" : "default"),
- click: this.change_to_next_page
- });
- }
- this.set_buttons(buttons);
- },
- _render_page_status: function (page, withAnim) {
- $(page.menu_item).find('span').toggleClass('fa-check', !!page.done);
- if (withAnim && page.done) { // page checked animation
- page.$dom.addClass('marked');
- _.delay(function () {
- page.$dom.removeClass('marked');
- }, 1000);
- }
- },
- _show_last_open_page: function () {
- var last_open_page = utils.get_cookie(this.cookie_name);
- if (!last_open_page) {
- last_open_page = this.planner.data.last_open_page || false;
- }
-
- if (last_open_page && this._find_page_by_id(last_open_page)) {
- this._display_page(last_open_page);
- } else {
- this._display_page(this.pages[0].id);
- }
- },
- _render_menu: function() {
- var orphan_pages = [];
- var menu_categories = [];
- var menu_item_page_map = {};
-
- // pages with no category
- _.each(this.pages, (function (page) {
- if (!page.hide_from_menu && !page.get_category_name(this.category_selector)) {
- _create_menu_item(page, orphan_pages, menu_item_page_map);
- }
- }).bind(this));
-
- // pages with a category
- this.$template.filter(this.category_selector).each((function (index, menu_category) {
- var $menu_category = $(menu_category);
- var menu_category_item = {
- name: $menu_category.attr('menu-category-id'),
- classes: $menu_category.attr('menu-classes'),
- menu_items: [],
- };
-
- _.each(this.pages, (function (page) {
- if (!page.hide_from_menu && page.get_category_name(this.category_selector) === menu_category_item.name) {
- _create_menu_item(page, menu_category_item.menu_items, menu_item_page_map);
- }
- }).bind(this));
-
- menu_categories.push(menu_category_item);
-
- // remove the branding used to separate the pages
- this.$template = this.$template.not($menu_category);
- this.$template = this.$template.add($menu_category.contents());
- }).bind(this));
-
- return QWeb.render('PlannerMenu', {
- 'orphan_pages': orphan_pages,
- 'menu_categories': menu_categories,
- 'menu_item_page_map': menu_item_page_map
- });
-
- function _create_menu_item(page, menu_items, menu_item_page_map) {
- var $menu_item_element = page.$dom.find('h1[data-menutitle]');
- var menu_title = $menu_item_element.data('menutitle') || $menu_item_element.text();
-
- menu_items.push(menu_title);
- menu_item_page_map[menu_title] = page.id;
- }
- },
- _get_next_page_id: function () {
- var currentID = this.currently_shown_page.id;
- var currentIndex = _.findIndex(this.pages, function (page) {
- return page.id === currentID;
- });
- var nextPage = this.pages[currentIndex + 1];
- return nextPage ? nextPage.id : null;
- },
- _find_page_by_id: function (id) {
- return _.find(this.pages, function (page) {
- return page.id === id;
- });
- },
- _find_menu_item_by_page_id: function (page_id) {
- return _.find(this.menu_items, function (menu_item) {
- var $menu_item = $(menu_item);
- return $($menu_item.find('a')).attr('href') === '#' + page_id;
- });
- },
- _display_page: function (page_id) {
- if (!page_id) return;
-
- var self = this;
- var page = this._find_page_by_id(page_id);
- if (this.currently_active_menu_item) {
- $(this.currently_active_menu_item).removeClass('active');
- }
-
- var menu_item = this._find_menu_item_by_page_id(page_id);
- $(menu_item).addClass('active');
- this.currently_active_menu_item = menu_item;
-
- if (this.currently_shown_page) {
- this.currently_shown_page.$dom.removeClass('show');
- }
-
- page.$dom.addClass('show');
- this.currently_shown_page = page;
-
- this._update_title();
- this._render_page_status(this.currently_shown_page);
- this._update_buttons();
-
- this.planner.data.last_open_page = page_id;
- utils.set_cookie(this.cookie_name, page_id, 8*60*60); // create cookie for 8h
- this.$el.scrollTop("0");
-
- this.$('textarea').each(function () {
- dom.autoresize($(this), {parent: self});
- });
- },
- // planner data functions
- _get_values: function (page) {
- // if no page_id, take the complete planner
- var base_elem = page ? page.$dom : this.$(".o_planner_page");
- var values = {};
- // get the selector for all the input and mark_button
- // only INPUT (select, textearea, input, checkbox and radio), and BUTTON (.mark_button#) are observed
- var inputs = base_elem.find("textarea[id^='input_element'], input[id^='input_element'], select[id^='input_element'], button[id^='mark_button']");
- _.each(inputs, function(elem){
- var $elem = $(elem);
- var tid = $elem.attr('id');
- if ($elem.prop("tagName") === 'BUTTON'){
- if($elem.hasClass('fa-check-square-o')){
- values[tid] = 'marked';
- }else{
- values[tid] = '';
- }
- }
- if ($elem.prop("tagName") === 'INPUT' || $elem.prop("tagName") === 'TEXTAREA'){
- var ttype = $elem.attr('type');
- if (ttype === 'checkbox' || ttype === 'radio'){
- values[tid] = '';
- if ($elem.is(':checked')){
- values[tid] = 'checked';
- }
- }else{
- values[tid] = $elem.val();
- }
- }
- });
-
- this.pages.forEach(function(page) {
- values[page.id] = page.done;
- });
- return values;
- },
- _set_values: function(values){
- var self = this;
- _.each(values, function (val, id) {
- var $elem = self.$('[id="'+id+'"]');
- if ($elem.prop("tagName") === 'BUTTON'){
- if(val === 'marked'){
- $elem.addClass('fa-check-square-o btn-default').removeClass('fa-square-o btn-primary');
- self.$("li a[href=#"+$elem.data('pageid')+"] span").addClass('fa-check');
- }
- }
- if ($elem.prop("tagName") === 'INPUT' || $elem.prop("tagName") === 'TEXTAREA'){
- var ttype = $elem.attr("type");
- if (ttype === 'checkbox' || ttype === 'radio'){
- if (val === 'checked') {
- $elem.attr('checked', 'checked');
- }
- }else{
- $elem.val(val);
- }
- }
- });
-
- _.each(this.pages, function (page) {
- page.done = values[page.id];
- self._render_page_status(page);
- });
- },
- _update_planner: function () {
- // update the planner.data with the inputs
- var vals = this._get_values(this.currently_shown_page);
- this.planner.data = _.extend(this.planner.data, vals);
-
- // re compute the progress percentage
- var total_pages = 0;
- var done_pages = 0;
-
- _.each(this.pages, function (page) {
- if (! page.hide_mark_as_done) {
- total_pages++;
- }
- if (page.done) {
- done_pages++;
- }
- });
- var percent = MIN_PROGRESS + parseInt(done_pages / total_pages * (100 - MIN_PROGRESS), 10);
- this.set('progress', percent);
-
- this.planner.progress = percent;
- // save data and progress in database
- this._save_planner_data();
- },
- _save_planner_data: function() {
- return rpc.query({
- model: 'web.planner',
- method: 'write',
- args: [this.planner.id, {'data': JSON.stringify(this.planner.data), 'progress': this.planner.progress}],
- });
- },
- show_enterprise: function () {
- var buttons = [{
- text: _t("Upgrade now"),
- classes: 'btn-primary',
- close: true,
- click: function () {
- rpc.query({
- model: "res.users",
- method: "search_count",
- args: [[["share", "=", false]]],
- })
- .then(function (data) {
- window.location = "https://www.odoo.com/odoo-enterprise/upgrade?utm_medium=community_upgrade&num_users=" + data;
- });
- },
- }, {
- text: _t("Cancel"),
- close: true,
- }];
- var dialog = new Dialog(this, {
- size: 'medium',
- buttons: buttons,
- $content: $('<div>', {
- html: QWeb.render('EnterpriseUpgrade'),
- }),
- title: _t("Odoo Enterprise"),
- }).open();
-
- return dialog;
- },
-});
-
-var PlannerLauncher = Widget.extend({
- template: "PlannerLauncher",
- sequence: 100, // force it to be the left-most item in the systray to prevent flickering as it is not displayed in all apps
- events: {
- "click": "show_dialog"
- },
- start: function () {
- this.$progress = this.$(".progress");
- this.$progressBar = this.$progress.find(".progress-bar");
- this.$progress.tooltip({html: true, placement: 'bottom', delay: {'show': 500}});
- this._loadPlannerDef = this._fetch_planner_data();
- return this._super.apply(this, arguments);
- },
- _fetch_planner_data: function () {},
- show_dialog: function () {
- return this._loadPlannerDef.then((function () {
- this.dialog = new PlannerDialog(this, undefined, this.planner);
- this.dialog.on("planner_progress_changed", this, this._update_parent_progress_bar);
- this.dialog.open();
- }).bind(this));
- },
- _setup_for_planner: function (planner) {
- this.planner = planner;
- this.$progress.attr('data-original-title', this.planner.tooltip_planner);
- this._update_parent_progress_bar(this.planner.progress || MIN_PROGRESS);
- },
- _update_parent_progress_bar: function (percent) {
- this.$progress.toggleClass("o_hidden", percent >= 100);
- this.$progressBar.css('width', percent + "%");
- },
-});
-
-return {
- PlannerDialog: PlannerDialog,
- PlannerLauncher: PlannerLauncher
-};
-
-});