[MERGE] tiles style
[odoo/odoo.git] / addons / web_dashboard / static / src / js / dashboard.js
index 07c9f83..50f6aca 100644 (file)
@@ -319,90 +319,6 @@ openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({
 });
 
 /*
- * ApplicationTiles
- * This client action designed to be used as a dashboard widget display
- * either a list of application to install (if none is installed yet) or
- * a list of root menu
- */
-openerp.web.client_actions.add( 'board.home.applications', 'openerp.web_dashboard.ApplicationTiles');
-openerp.web_dashboard.apps = {
-    applications: [
-        [
-            {
-                module: 'crm', name: 'CRM',
-                help: "Acquire leads, follow opportunities, manage prospects and phone calls, \u2026"
-            }, {
-                module: 'sale', name: 'Sales',
-                help: "Do quotations, follow sales orders, invoice and control deliveries"
-            }, {
-                module: 'account_voucher', name: 'Invoicing',
-                help: "Send invoice, track payments and reminders"
-            }, {
-                module: 'point_of_sale', name: 'Point of Sales',
-                help: "Manage shop sales, use touch-screen POS"
-            }
-        ], [
-            {
-                module: 'purchase', name: 'Purchase',
-                help: "Do purchase orders, control invoices and reception, follow your suppliers, \u2026"
-            }, {
-                module: 'stock', name: 'Warehouse',
-                help: "Track your stocks, schedule product moves, manage incoming and outgoing shipments, \u2026"
-            }, {
-                module: 'mrp', name: 'Manufacturing',
-                help: "Manage your manufacturing, control your supply chain, personalize master data, \u2026"
-            }, {
-                module: 'account_accountant', name: 'Accounting and Finance',
-                help: "Record financial operations, automate followup, manage multi-currency, \u2026"
-            }
-        ], [
-            {
-                module: 'project', name: 'Projects',
-                help: "Manage projects, track tasks, invoice task works, follow issues, \u2026"
-            }, {
-                module: 'hr', name: 'Human Resources',
-                help: "Manage employees and their contracts, follow laves, recruit people, \u2026"
-            }, {
-                module: 'marketing', name: 'Marketing',
-                help: "Manage campaigns, follow activities, automate emails, \u2026"
-            }, {
-                module: 'knowledge', name: 'Knowledge',
-                help: "Track your documents, browse your files, \u2026"
-            }
-        ]
-    ]
-};
-openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({
-    template: 'ApplicationTiles',
-    start: function () {
-        this._super();
-        $('.secondary_menu', this.$element.closest('.openerp')).hide();
-        return this.do_display_root_menu();
-    },
-    stop: function () {
-        $('.secondary_menu', this.$element.closest('.openerp')).show();
-        this._super();
-    },
-    do_display_root_menu: function() {
-        var self = this;
-        return  new openerp.web.DataSetSearch( this, 'ir.ui.menu', null, [['parent_id', '=', false]])
-            .read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) {
-            // Create a matrix of 3*x applications
-            var rows = [];
-            while (applications.length) {
-                rows.push(applications.splice(0, 3));
-            }
-            var tiles = QWeb.render( 'ApplicationTiles.content', {rows: rows});
-            self.$element.append(tiles)
-                .find('.oe-dashboard-home-tile')
-                    .click(function () {
-                        openerp.webclient.menu.on_menu_click(null, $(this).data('menuid'))
-                    });
-        });
-    }
-});
-
-/*
  * Widgets
  * This client action designed to be used as a dashboard widget display
  * the html content of a res_widget given as argument
@@ -442,4 +358,115 @@ openerp.web_dashboard.Widget = openerp.web.View.extend(/** @lends openerp.web_da
     }
 });
 
+/*
+ * HomeTiles this client action display either the list of application to
+ * install (if none is installed yet) or a list of root menu items
+ */
+openerp.web.client_actions.add('default_home', 'session.web_dashboard.ApplicationTiles');
+openerp.web_dashboard.ApplicationTiles = openerp.web.Widget.extend({
+    template: 'web_dashboard.ApplicationTiles',
+    init: function(parent) {
+        this._super(parent);
+    },
+    start: function() {
+        var self = this;
+        var applications = [
+            {module: 'crm', name: 'CRM', menu: 'Sales', help: "Acquire leads, follow opportunities, manage prospects and phone calls, \u2026"},
+        ];
+        var domain = [['core','=',true],['state','=','installed']];
+        var ds = new openerp.web.DataSetSearch(this, 'ir.module.module',{},domain);
+        ds.read_slice(['id'], {}, function(result) {
+            if(result.length) {
+                self.on_installed_database();
+            } else {
+                self.on_uninstalled_database();
+            }
+        });
+    },
+    on_uninstalled_database: function() {
+        console.log("UNINSTALLED");
+        this.$element.html("ApplicationInstaller");
+        installer = new openerp.web_dashboard.ApplicationInstaller(this);
+        installer.appendTo(this.$element);
+    },
+    on_installed_database: function() {
+        console.log("INSTALLED");
+        this.$element.html("ApplicationTiles");
+        var self = this;
+        var ds = new openerp.web.DataSetSearch( this, 'ir.ui.menu', null, [['parent_id', '=', false]]);
+        var r = ds.read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) {
+            // Create a matrix of 3*x applications
+            var rows = [];
+            while (applications.length) {
+                rows.push(applications.splice(0, 3));
+            }
+            var tiles = QWeb.render( 'ApplicationTiles.content', {rows: rows});
+            self.$element.append(tiles).find('.oe-dashboard-home-tile').click(function () {
+                openerp.webclient.menu.on_menu_click(null, $(this).data('menuid'))
+            });
+        });
+    }
+});
+
+/**
+ * ApplicationInstaller
+ * This client action  display a list of applications to install.
+ */
+openerp.web.client_actions.add( 'board.application.installer', 'openerp.web_dashboard.ApplicationInstaller');
+openerp.web_dashboard.ApplicationInstaller = openerp.web.View.extend({
+    template: 'web_dashboard.ApplicationInstaller',
+    start: function () {
+        this._super();
+        $('.secondary_menu', this.$element.closest('.openerp')).hide();
+        this.$element.append("Display ir module module kanban view");
+    },
+    /* currenlt unused */
+    on_install_clicked: function() {
+        var Installer = new openerp.web.DataSet(this, 'base.setup.installer');
+        Installer.call('default_get', [], function (installed_modules) {
+            console.log(installed_modules);
+            self.$element.html(QWeb.render('Welcome-Page', {'applications': applications}));
+            self.$element.find('.install-module-link').click(function () {
+                self.install_module($(this).data('module'), $(this).data('menu'));
+                return false;
+            });
+        });
+    },
+    install_module: function (module_name, menu_name) {
+        var self = this;
+        var Modules = new openerp.web.DataSetSearch(
+            this, 'ir.module.module', null,
+            [['name', '=', module_name], ['state', '=', 'uninstalled']]);
+        var Upgrade = new openerp.web.DataSet(this, 'base.module.upgrade');
+
+        $.blockUI();
+        Modules.read_slice(['id'], {}, function (records) {
+            if (!(records.length === 1)) { $.unblockUI(); return; }
+            Modules.call('state_update',
+                [_.pluck(records, 'id'), 'to install', ['uninstalled']],
+                function () {
+                    Upgrade.call('upgrade_module', [[]], function () {
+                        self.run_configuration_wizards(menu_name);
+                    });
+                }
+            )
+        });
+    },
+    run_configuration_wizards: function (menu_name) {
+        var self = this;
+        new openerp.web.DataSet(this, 'res.config').call('start', [[]], function (action) {
+            self.widget_parent.widget_parent.do_action(action, function () {
+                openerp.webclient.do_reload();
+            });
+            self.$element.empty();
+            var dss = new openerp.web.DataSetSearch(this, 'ir.ui.menu', null, [['parent_id', '=', false], ['name', '=', menu_name]]);
+            dss.read_slice(['id'], {}, function(menus) {
+                if(!(menus.length === 1)) { $.unblockUI(); return; }
+                $.when(openerp.webclient.menu.on_menu_click(null, menus[0].id)).then($.unblockUI);
+            });
+        });
+    }
+});
+
+
 };