From 3399f2eb7cc0212a0ae9c5bf072f55fa2d7bce8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=9C=E6=9C=AA=E5=A4=AE?= <2996985766@qq.com>
Date: Sat, 6 Sep 2025 23:58:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=A2=9E=E5=8A=A0=E5=92=8C?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 隐藏头部菜单默认为:True
- 增加开启/关闭全屏功能
- 简易过滤的样式优化
- 仪表台编辑只有管理员可见
---
.../components/quick_filter/quick_filter.xml | 34 +-
.../quick_filter/quick_filter_label.scss | 56 +
.../static/src/js/ks_dashboard_ninja_new.js | 1060 ++++++++---------
.../src/xml/ks_dashboard_ninja_templates.xml | 2 +-
.../__manifest__.py | 2 +-
.../static/src/js/navbar.js | 459 +++----
.../src/scss/menu/fullscreen_toggle.scss | 37 +
.../static/src/xml/menu.xml | 58 +-
8 files changed, 923 insertions(+), 785 deletions(-)
create mode 100644 header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter_label.scss
create mode 100644 sh_backmate_theme_adv_enterprise/static/src/scss/menu/fullscreen_toggle.scss
diff --git a/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.xml b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.xml
index 9437a05e6..3133403d6 100644
--- a/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.xml
+++ b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.xml
@@ -1,14 +1,15 @@
-
-
+
-
-
-
+
+
\ No newline at end of file
diff --git a/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter_label.scss b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter_label.scss
new file mode 100644
index 000000000..6c55bd8ff
--- /dev/null
+++ b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter_label.scss
@@ -0,0 +1,56 @@
+/* label 基础样式 */
+.header-filter-value .selection-options label {
+ display: inline-block;
+ margin: 6px 8px 6px 0;
+ padding: 6px 16px;
+ font-size: 14px;
+ line-height: 1.5;
+ color: #444;
+ background: #fafafa;
+ border: 1px solid #e0e0e0;
+ border-radius: 999px;
+ /* 完全圆角 chip */
+ cursor: pointer;
+ transition: all 0.25s ease;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
+ text-decoration: none !important;
+ /* 🔥 去掉下划线 */
+ user-select: none;
+ /* 防止文字选中 */
+}
+
+/* hover 效果 */
+.header-filter-value .selection-options label:hover {
+ border-color: #4a90e2;
+ color: #4a90e2;
+ background: #f0f7ff;
+ box-shadow: 0 2px 6px rgba(74, 144, 226, 0.15);
+}
+
+/* 选中效果 */
+.header-filter-value .selection-options input:checked+label {
+ background: linear-gradient(135deg, #4a90e2, #357ABD);
+ border-color: #357ABD;
+ color: #fff;
+ font-weight: 500;
+ box-shadow: 0 3px 8px rgba(74, 144, 226, 0.3);
+}
+
+/* 小动画:点击时轻微缩放 */
+.header-filter-value .selection-options label:active {
+ transform: scale(0.95);
+}
+
+#header_search_collapse {
+ .header-search-filter {
+ .header-filter-value {
+ .selection-options {
+
+ input[type="radio"]:checked+label,
+ input[type="checkbox"]:checked+label {
+ left: 0 !important;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ks_dashboard_ninja/static/src/js/ks_dashboard_ninja_new.js b/ks_dashboard_ninja/static/src/js/ks_dashboard_ninja_new.js
index 4edd4213a..a4c74de2c 100644
--- a/ks_dashboard_ninja/static/src/js/ks_dashboard_ninja_new.js
+++ b/ks_dashboard_ninja/static/src/js/ks_dashboard_ninja_new.js
@@ -1,11 +1,11 @@
/** @odoo-module **/
import { _t } from "@web/core/l10n/translation";
-import { Component, onWillStart, useState ,onMounted, onWillRender, useRef, useEffect,onWillUnmount } from "@odoo/owl";
+import { Component, onWillStart, useState, onMounted, onWillRender, useRef, useEffect, onWillUnmount } from "@odoo/owl";
import { registry } from "@web/core/registry";
import { jsonrpc } from "@web/core/network/rpc_service";
import { useService } from "@web/core/utils/hooks";
-import { loadJS,loadCSS } from "@web/core/assets";
+import { loadJS, loadCSS } from "@web/core/assets";
import { localization } from "@web/core/l10n/localization";
import { session } from "@web/session";
import { download } from "@web/core/network/download";
@@ -15,9 +15,9 @@ import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_d
import { patch } from "@web/core/utils/patch";
import { isBrowserChrome, isMobileOS } from "@web/core/browser/feature_detection";
import { loadBundle } from '@web/core/assets';
-import {FormViewDialog} from '@web/views/view_dialogs/form_view_dialog';
+import { FormViewDialog } from '@web/views/view_dialogs/form_view_dialog';
import { renderToElement } from "@web/core/utils/render";
-import {globalfunction } from '@ks_dashboard_ninja/js/ks_global_functions'
+import { globalfunction } from '@ks_dashboard_ninja/js/ks_global_functions'
import { Ksdashboardtile } from '@ks_dashboard_ninja/components/ks_dashboard_tile_view/ks_dashboard_tile';
import { Ksdashboardlistview } from '@ks_dashboard_ninja/components/ks_dashboard_list_view/ks_dashboard_list';
import { Ksdashboardtodo } from '@ks_dashboard_ninja/components/ks_dashboard_to_do_item/ks_dashboard_to_do';
@@ -26,8 +26,8 @@ import { Ksdashboardgraph } from '@ks_dashboard_ninja/components/ks_dashboard_gr
import { DateTimePicker } from "@web/core/datetime/datetime_picker";
import { DateTimeInput } from "@web/core/datetime/datetime_input";
const { DateTime } = luxon;
-import {formatDate,formatDateTime} from "@web/core/l10n/dates";
-import {parseDateTime,parseDate,} from "@web/core/l10n/dates";
+import { formatDate, formatDateTime } from "@web/core/l10n/dates";
+import { parseDateTime, parseDate, } from "@web/core/l10n/dates";
export class KsDashboardNinja extends Component {
@@ -38,15 +38,15 @@ export class KsDashboardNinja extends Component {
this.notification = useService("notification");
this._rpc = useService("rpc");
this.dialogService = useService("dialog");
- this.header = useRef("ks_dashboard_header");
+ this.header = useRef("ks_dashboard_header");
this.main_body = useRef("ks_main_body");
this.reload_menu_option = {
- reload:this.props.action.context.ks_reload_menu,
+ reload: this.props.action.context.ks_reload_menu,
menu_id: this.props.action.context.ks_menu_id
};
this.ks_mode = 'active';
this.action_manager = parent;
-// this.controllerID = params.controllerID;
+ // this.controllerID = params.controllerID;
this.name = "ks_dashboard";
this.ksIsDashboardManager = false;
this.ksDashboardEditMode = false;
@@ -58,7 +58,7 @@ export class KsDashboardNinja extends Component {
'P': 'svg+xml',
};
this.ksAllowItemClick = true;
-
+ this.isAdmin = session.is_admin;
//Dn Filters Iitialization
this.date_format = localization.dateFormat
@@ -100,21 +100,21 @@ export class KsDashboardNinja extends Component {
'l_custom': _t('Custom Filter'),
};
// To make sure date filter show date in specific order.
- this.ks_date_filter_selection_order = ['l_day', 't_week', 't_month', 't_quarter','t_year',
- 'td_week','td_month','td_quarter', 'td_year','n_day','n_week', 'n_month', 'n_quarter', 'n_year',
- 'ls_day','ls_week', 'ls_month', 'ls_quarter', 'ls_year', 'l_week', 'l_month', 'l_quarter', 'l_year',
- 'ls_past_until_now', 'ls_pastwithout_now','n_future_starting_now', 'n_futurestarting_tomorrow',
+ this.ks_date_filter_selection_order = ['l_day', 't_week', 't_month', 't_quarter', 't_year',
+ 'td_week', 'td_month', 'td_quarter', 'td_year', 'n_day', 'n_week', 'n_month', 'n_quarter', 'n_year',
+ 'ls_day', 'ls_week', 'ls_month', 'ls_quarter', 'ls_year', 'l_week', 'l_month', 'l_quarter', 'l_year',
+ 'ls_past_until_now', 'ls_pastwithout_now', 'n_future_starting_now', 'n_futurestarting_tomorrow',
'l_custom'
];
this.ks_dashboard_id = this.props.action.params.ks_dashboard_id;
this.gridstack_options = {
- staticGrid:true,
+ staticGrid: true,
float: false,
cellHeight: 80,
- styleInHead : true,
-// disableOneColumnMode: true,
+ styleInHead: true,
+ // disableOneColumnMode: true,
};
if (isMobileOS()) {
this.gridstack_options.disableOneColumnMode = false
@@ -128,22 +128,22 @@ export class KsDashboardNinja extends Component {
ks_dashboard_name: '',
ks_multi_layout: false,
ks_dash_name: '',
- ks_dashboard_manager :false,
+ ks_dashboard_manager: false,
date_selection_data: {},
- date_selection_order :[],
- ks_show_create_layout_option : true,
- ks_show_layout :false,
- ks_selected_board_id:false,
- ks_child_boards:false,
- ks_dashboard_data:{},
- ks_dn_pre_defined_filters:[],
- ks_dashboard_item_length:0,
- ks_dashboard_items:[],
- update:false,
- ksDateFilterSelection :false,
- pre_defined_filter :{},
+ date_selection_order: [],
+ ks_show_create_layout_option: true,
+ ks_show_layout: false,
+ ks_selected_board_id: false,
+ ks_child_boards: false,
+ ks_dashboard_data: {},
+ ks_dn_pre_defined_filters: [],
+ ks_dashboard_item_length: 0,
+ ks_dashboard_items: [],
+ update: false,
+ ksDateFilterSelection: false,
+ pre_defined_filter: {},
ksDateFilterStartDate: DateTime.now(),
- ksDateFilterEndDate:DateTime.now()
+ ksDateFilterEndDate: DateTime.now()
})
this.ksChartColorOptions = ['default', 'cool', 'warm', 'neon'];
this.ksDateFilterSelection = false;
@@ -151,8 +151,8 @@ export class KsDashboardNinja extends Component {
this.ksDateFilterEndDate = false;
this.ksUpdateDashboard = {};
$("head").append('');
- if(this.props.action.context.ks_reload_menu){
- this.trigger_up('reload_menu_data', { keep_open: true, scroll_to_bottom: true});
+ if (this.props.action.context.ks_reload_menu) {
+ this.trigger_up('reload_menu_data', { keep_open: true, scroll_to_bottom: true });
}
var context = {
ksDateFilterSelection: this.ksDateFilterSelection,
@@ -160,25 +160,25 @@ export class KsDashboardNinja extends Component {
ksDateFilterEndDate: self.ksDateFilterEndDate,
}
this.dn_state = {}
- this.dn_state['user_context']=context
+ this.dn_state['user_context'] = context
this.ks_speeches = [];
onWillStart(this.willStart);
onWillRender(this.dashboard_mount);
- onWillUnmount(()=>this.ks_switch_default_dashboard());
+ onWillUnmount(() => this.ks_switch_default_dashboard());
onMounted(() => {
this.grid_initiate();
var filter_date_data = this.getObjectFromCookie('FilterDateData' + this.ks_dashboard_id);
- if (filter_date_data != null){
+ if (filter_date_data != null) {
$(this.header.el).find('.ks_date_filter_selected').removeClass('ks_date_filter_selected');
$('#ks_date_filter_selection').text(this.ks_date_filter_selections[filter_date_data]);
var element_selected = document.getElementById(filter_date_data);
element_selected.classList.add('ks_date_filter_selected')
this.state.ksDateFilterSelection = filter_date_data;
- if(filter_date_data==='l_custom'){
+ if (filter_date_data === 'l_custom') {
var custom_range = this.getObjectFromCookie('custom_range' + this.ks_dashboard_id);
- if(custom_range){
+ if (custom_range) {
this.state.ksDateFilterStartDate = custom_range['start_date']
this.state.ksDateFilterEndDate = custom_range['end_date']
}
@@ -188,67 +188,67 @@ export class KsDashboardNinja extends Component {
}
- if (this.getObjectFromCookie('FilterDateData' + this.ks_dashboard_id) || this.getObjectFromCookie('FilterOrderData' + this.ks_dashboard_id)){
+ if (this.getObjectFromCookie('FilterDateData' + this.ks_dashboard_id) || this.getObjectFromCookie('FilterOrderData' + this.ks_dashboard_id)) {
this._onKsApplyDateFilter();
}
});
}
- willStart(){
+ willStart() {
var self = this;
var def;
var storedData = this.getObjectFromCookie('FilterOrderData' + self.ks_dashboard_id);
if (this.reload_menu_option.reload && this.reload_menu_option.menu_id) {
def = this.getParent().actionService.ksDnReloadMenu(this.reload_menu_option.menu_id);
}
- return $.when(def, loadBundle("ks_dashboard_ninja.ks_dashboard_lib")).then(function() {
- return self.ks_fetch_data().then(function(){
- return self.ks_fetch_items_data().then(function(){
- if(storedData != null ){
+ return $.when(def, loadBundle("ks_dashboard_ninja.ks_dashboard_lib")).then(function () {
+ return self.ks_fetch_data().then(function () {
+ return self.ks_fetch_items_data().then(function () {
+ if (storedData != null) {
self.ks_dashboard_data.ks_dashboard_domain_data = storedData;
- }
- });
+ }
+ });
});
});
}
- grid_initiate(){
- var self=this;
+ grid_initiate() {
+ var self = this;
const ks_element = this.main_body.el;
var $gridstackContainer = $(`.grid-stack-${this.ks_dashboard_id}`);
- if($gridstackContainer.length){
- this.grid = GridStack.init(this.gridstack_options,$gridstackContainer[0]);
+ if ($gridstackContainer.length) {
+ this.grid = GridStack.init(this.gridstack_options, $gridstackContainer[0]);
var item = self.ksSortItems(self.ks_dashboard_data.ks_item_data)
- if(this.ks_dashboard_data.ks_gridstack_config){
+ if (this.ks_dashboard_data.ks_gridstack_config) {
this.gridstackConfig = JSON.parse(this.ks_dashboard_data.ks_gridstack_config);
}
for (var i = 0; i < item.length; i++) {
- var graphs = ['ks_scatter_chart','ks_bar_chart', 'ks_horizontalBar_chart', 'ks_line_chart', 'ks_area_chart', 'ks_doughnut_chart','ks_polarArea_chart','ks_pie_chart','ks_flower_view', 'ks_radar_view','ks_radialBar_chart','ks_map_view','ks_funnel_chart','ks_bullet_chart', 'ks_to_do', 'ks_list_view']
+ var graphs = ['ks_scatter_chart', 'ks_bar_chart', 'ks_horizontalBar_chart', 'ks_line_chart', 'ks_area_chart', 'ks_doughnut_chart', 'ks_polarArea_chart', 'ks_pie_chart', 'ks_flower_view', 'ks_radar_view', 'ks_radialBar_chart', 'ks_map_view', 'ks_funnel_chart', 'ks_bullet_chart', 'ks_to_do', 'ks_list_view']
var $ks_preview = $('#' + item[i].id)
if ($ks_preview.length && !this.ks_dashboard_data.ks_ai_explain_dash) {
if (item[i].id in self.gridstackConfig) {
- var min_width = graphs.includes(item[i].ks_dashboard_item_type)? 3:2
- self.grid.addWidget($ks_preview[0], {x:self.gridstackConfig[item[i].id].x, y:self.gridstackConfig[item[i].id].y, w:self.gridstackConfig[item[i].id].w, h: self.gridstackConfig[item[i].id].h, autoPosition:false, minW:min_width, maxW:null, minH:2, maxH:null, id:item[i].id});
- } else if ( graphs.includes (item[i].ks_dashboard_item_type)) {
- self.grid.addWidget($ks_preview[0], {x:0, y:0, w:5, h:5,autoPosition:true,minW:4,maxW:null,minH:3,maxH:null, id :item[i].id});
- }else{
- self.grid.addWidget($ks_preview[0], {x:0, y:0, w:3, h:2,autoPosition:true,minW:3,maxW:null,minH:2,maxH:2,id:item[i].id});
+ var min_width = graphs.includes(item[i].ks_dashboard_item_type) ? 3 : 2
+ self.grid.addWidget($ks_preview[0], { x: self.gridstackConfig[item[i].id].x, y: self.gridstackConfig[item[i].id].y, w: self.gridstackConfig[item[i].id].w, h: self.gridstackConfig[item[i].id].h, autoPosition: false, minW: min_width, maxW: null, minH: 2, maxH: null, id: item[i].id });
+ } else if (graphs.includes(item[i].ks_dashboard_item_type)) {
+ self.grid.addWidget($ks_preview[0], { x: 0, y: 0, w: 5, h: 5, autoPosition: true, minW: 4, maxW: null, minH: 3, maxH: null, id: item[i].id });
+ } else {
+ self.grid.addWidget($ks_preview[0], { x: 0, y: 0, w: 3, h: 2, autoPosition: true, minW: 3, maxW: null, minH: 2, maxH: 2, id: item[i].id });
}
- }else{
- if (item[i].id in self.gridstackConfig) {
- var min_width = graphs.includes(item[i].ks_dashboard_item_type)? 3:2
- self.grid.addWidget($ks_preview[0], {x:self.gridstackConfig[item[i].id].x, y:self.gridstackConfig[item[i].id].y, w:12, h: 6, autoPosition:false, minW:min_width, maxW:null, minH:2, maxH:null, id:item[i].id});
- } else {
- self.grid.addWidget($ks_preview[0], {x:0, y:0, w:12, h:6,autoPosition:true,minW:4,maxW:null,minH:3,maxH:null, id :item[i].id});
+ } else {
+ if (item[i].id in self.gridstackConfig) {
+ var min_width = graphs.includes(item[i].ks_dashboard_item_type) ? 3 : 2
+ self.grid.addWidget($ks_preview[0], { x: self.gridstackConfig[item[i].id].x, y: self.gridstackConfig[item[i].id].y, w: 12, h: 6, autoPosition: false, minW: min_width, maxW: null, minH: 2, maxH: null, id: item[i].id });
+ } else {
+ self.grid.addWidget($ks_preview[0], { x: 0, y: 0, w: 12, h: 6, autoPosition: true, minW: 4, maxW: null, minH: 3, maxH: null, id: item[i].id });
}
- Object.values(ks_element.querySelectorAll(".ks_dashboard_item_button_container")).map((item) => {
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_item_button_container")).map((item) => {
$(item).addClass('d-none')
$(item).removeClass('d-md-flex')
- })
- Object.values(ks_element.querySelectorAll(".ks_pager_name")).map((item) => {
+ })
+ Object.values(ks_element.querySelectorAll(".ks_pager_name")).map((item) => {
$(item).addClass('d-none')
- })
+ })
}
@@ -258,21 +258,21 @@ export class KsDashboardNinja extends Component {
this.ksRenderDashboard();
// Events //
- Object.values(ks_element.querySelectorAll(".ks_duplicate_item")).map((item) => { item.addEventListener('click', this.onKsDuplicateItemClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_move_item")).map((item) => { item.addEventListener('click', this.onKsMoveItemClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_item_delete")).map((item) => { item.addEventListener('click', this._onKsDeleteItemClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_chart_xls_csv_export")).map((item) => { item.addEventListener('click', this.ksChartExportXlsCsv.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_chart_pdf_export")).map((item) => { item.addEventListener('click', this.ksChartExportPdf.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_chart_image_export")).map((item) => { item.addEventListener('click', this.ksChartExportimage.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_chart_json_export")).map((item) => { item.addEventListener('click', this.ksItemExportJson.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_quick_edit_action_popup")).map((item) => { item.addEventListener('click', this.onEditItemTypeClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_item_customize")).map((item) => { item.addEventListener('click', this.onEditItemTypeClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_menu_container")).map((item) => { item.addEventListener('click', this.stoppropagation.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_item_description")).map((item) => { item.addEventListener('click', this.stoppropagation.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_item_click")).map((item) => { item.addEventListener('click', this._onKsItemClick.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_item_action")).map((item) => { item.addEventListener('click', this.ks_dashboard_item_action.bind(this))})
- Object.values(ks_element.querySelectorAll(".ks_dashboard_item_chart_info")).map((item) => { item.addEventListener('click', this.onChartMoreInfoClick.bind(this))})
-// Object.values((self.header.el).querySelectorAll(".ks_custom_filter_field_selector")).map((item) => { item.addEventListener('change', this.ksOnCustomFilterFieldSelect.bind(this))})
+ Object.values(ks_element.querySelectorAll(".ks_duplicate_item")).map((item) => { item.addEventListener('click', this.onKsDuplicateItemClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_move_item")).map((item) => { item.addEventListener('click', this.onKsMoveItemClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_item_delete")).map((item) => { item.addEventListener('click', this._onKsDeleteItemClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_chart_xls_csv_export")).map((item) => { item.addEventListener('click', this.ksChartExportXlsCsv.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_chart_pdf_export")).map((item) => { item.addEventListener('click', this.ksChartExportPdf.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_chart_image_export")).map((item) => { item.addEventListener('click', this.ksChartExportimage.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_chart_json_export")).map((item) => { item.addEventListener('click', this.ksItemExportJson.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_quick_edit_action_popup")).map((item) => { item.addEventListener('click', this.onEditItemTypeClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_item_customize")).map((item) => { item.addEventListener('click', this.onEditItemTypeClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_menu_container")).map((item) => { item.addEventListener('click', this.stoppropagation.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_item_description")).map((item) => { item.addEventListener('click', this.stoppropagation.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_item_click")).map((item) => { item.addEventListener('click', this._onKsItemClick.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_item_action")).map((item) => { item.addEventListener('click', this.ks_dashboard_item_action.bind(this)) })
+ Object.values(ks_element.querySelectorAll(".ks_dashboard_item_chart_info")).map((item) => { item.addEventListener('click', this.onChartMoreInfoClick.bind(this)) })
+ // Object.values((self.header.el).querySelectorAll(".ks_custom_filter_field_selector")).map((item) => { item.addEventListener('change', this.ksOnCustomFilterFieldSelect.bind(this))})
}
@@ -283,36 +283,36 @@ export class KsDashboardNinja extends Component {
ksDateFilterStartDate: self.ksDateFilterStartDate,
ksDateFilterEndDate: self.ksDateFilterEndDate,
}
- if(self.dn_state['user_context']['ksDateFilterSelection'] !== undefined && self.ksDateFilterSelection !== 'l_none'){
+ if (self.dn_state['user_context']['ksDateFilterSelection'] !== undefined && self.ksDateFilterSelection !== 'l_none') {
context = self.dn_state['user_context']
}
- var ks_new_obj = {...session.user_context,...{allowed_company_ids:this.env.services.company.activeCompanyIds}}
+ var ks_new_obj = { ...session.user_context, ...{ allowed_company_ids: this.env.services.company.activeCompanyIds } }
return Object.assign(context, ks_new_obj);
}
- ks_fetch_data(){
+ ks_fetch_data() {
var self = this;
- return jsonrpc("/web/dataset/call_kw",{
+ return jsonrpc("/web/dataset/call_kw", {
model: 'ks_dashboard_ninja.board',
method: 'ks_fetch_dashboard_data',
args: [self.ks_dashboard_id],
- kwargs : {context:self.getContext()},
-// context: self.getContext()
- }).then(function(result) {
- // result = self.normalize_dn_data(result);
+ kwargs: { context: self.getContext() },
+ // context: self.getContext()
+ }).then(function (result) {
+ // result = self.normalize_dn_data(result);
self.ks_dashboard_data = result;
self.ks_dashboard_data['ks_dashboard_id'] = self.props.action.params.ks_dashboard_id
self.ks_dashboard_data['context'] = self.getContext()
self.ks_dashboard_data['ks_ai_dashboard'] = false
- if(self.dn_state['domain_data'] != undefined){
-// self.ks_dashboard_data.ks_dashboard_domain_data=self.dn_state['domain_data']
- Object.values(self.ks_dashboard_data.ks_dashboard_pre_domain_filter).map((x)=>{
- if(self.dn_state['domain_data'][x['model']] != undefined){
- if(self.dn_state['domain_data'][x['model']]['ks_domain_index_data'][0]['label'].indexOf(x['name']) ==-1){
+ if (self.dn_state['domain_data'] != undefined) {
+ // self.ks_dashboard_data.ks_dashboard_domain_data=self.dn_state['domain_data']
+ Object.values(self.ks_dashboard_data.ks_dashboard_pre_domain_filter).map((x) => {
+ if (self.dn_state['domain_data'][x['model']] != undefined) {
+ if (self.dn_state['domain_data'][x['model']]['ks_domain_index_data'][0]['label'].indexOf(x['name']) == -1) {
self.ks_dashboard_data.ks_dashboard_pre_domain_filter[x['id']].active = false;
}
}
- else{
+ else {
self.ks_dashboard_data.ks_dashboard_pre_domain_filter[x['id']].active = false;
}
})
@@ -320,51 +320,51 @@ export class KsDashboardNinja extends Component {
});
}
- dashboard_mount(){
+ dashboard_mount() {
var self = this;
-// var items = self.ksSortItems(self.ks_dashboard_data.ks_item_data)
+ // var items = self.ksSortItems(self.ks_dashboard_data.ks_item_data)
var items = Object.values(self.ks_dashboard_data.ks_item_data)
self.state.ks_dashboard_items = items
self.ks_dashboard_data['context'] = self.getContext()
}
- ks_fetch_items_data(){
+ ks_fetch_items_data() {
var self = this;
var items_promises = []
- self.ks_dashboard_data.ks_dashboard_items_ids.forEach(function(item_id){
- items_promises.push(jsonrpc("/web/dataset/call_kw",{
+ self.ks_dashboard_data.ks_dashboard_items_ids.forEach(function (item_id) {
+ items_promises.push(jsonrpc("/web/dataset/call_kw", {
model: "ks_dashboard_ninja.board",
method: "ks_fetch_item",
- args : [[item_id], self.ks_dashboard_id, self.ksGetParamsForItemFetch(item_id)],
- kwargs:{context:self.getContext()}
- }).then(function(result){
+ args: [[item_id], self.ks_dashboard_id, self.ksGetParamsForItemFetch(item_id)],
+ kwargs: { context: self.getContext() }
+ }).then(function (result) {
self.ks_dashboard_data.ks_item_data[item_id] = result[item_id];
self.state.ks_show_create_layout_option = (Object.keys(self.ks_dashboard_data.ks_item_data).length > 0) && self.ks_dashboard_data.ks_dashboard_manager
}));
});
self.state.ks_dashboard_name = self.ks_dashboard_data.name,
- self.state.ks_multi_layout = self.ks_dashboard_data.multi_layouts,
- self.state.ks_dash_name = self.ks_dashboard_data.name,
- self.state.ks_dashboard_manager = self.ks_dashboard_data.ks_dashboard_manager,
- self.state.date_selection_data = self.ks_date_filter_selections,
- self.state.date_selection_order = self.ks_date_filter_selection_order,
- self.state.ks_show_layout = self.ks_dashboard_data.ks_dashboard_manager && self.ks_dashboard_data.ks_child_boards && true,
- self.state.ks_selected_board_id = self.ks_dashboard_data.ks_selected_board_id,
- self.state.ks_child_boards = self.ks_dashboard_data.ks_child_boards,
- self.state.ks_dashboard_data = self.ks_dashboard_data,
- self.state.ks_dn_pre_defined_filters = Object.values(self.ks_dashboard_data.ks_dashboard_pre_domain_filter).sort(function(a, b){return a.sequence - b.sequence}),
- self.state.ks_dashboard_item_length = self.ks_dashboard_data.ks_dashboard_items_ids.length
+ self.state.ks_multi_layout = self.ks_dashboard_data.multi_layouts,
+ self.state.ks_dash_name = self.ks_dashboard_data.name,
+ self.state.ks_dashboard_manager = self.ks_dashboard_data.ks_dashboard_manager,
+ self.state.date_selection_data = self.ks_date_filter_selections,
+ self.state.date_selection_order = self.ks_date_filter_selection_order,
+ self.state.ks_show_layout = self.ks_dashboard_data.ks_dashboard_manager && self.ks_dashboard_data.ks_child_boards && true,
+ self.state.ks_selected_board_id = self.ks_dashboard_data.ks_selected_board_id,
+ self.state.ks_child_boards = self.ks_dashboard_data.ks_child_boards,
+ self.state.ks_dashboard_data = self.ks_dashboard_data,
+ self.state.ks_dn_pre_defined_filters = Object.values(self.ks_dashboard_data.ks_dashboard_pre_domain_filter).sort(function (a, b) { return a.sequence - b.sequence }),
+ self.state.ks_dashboard_item_length = self.ks_dashboard_data.ks_dashboard_items_ids.length
self.state.update = false
self.state.ksDateFilterSelection = self.state.ksDateFilterSelection == false ? 'none' : self.state.ksDateFilterSelection,
- self.state.pre_defined_filter = {}
+ self.state.pre_defined_filter = {}
self.state.custom_filter = {}
var custom_range = this.getObjectFromCookie('custom_range' + this.ks_dashboard_id);
- if(custom_range){
+ if (custom_range) {
this.state.ksDateFilterStartDate = parseDateTime(custom_range['start_date'], self.datetime_format)
this.state.ksDateFilterEndDate = parseDateTime(custom_range['end_date'], self.datetime_format)
- }else{
+ } else {
self.state.ksDateFilterStartDate = DateTime.now()
self.state.ksDateFilterEndDate = DateTime.now()
}
@@ -375,34 +375,34 @@ export class KsDashboardNinja extends Component {
}
- ksGetParamsForItemFetch(){
+ ksGetParamsForItemFetch() {
return {};
}
- ksRenderDashboard(){
+ ksRenderDashboard() {
var self = this;
if (self.ks_dashboard_data.ks_child_boards) self.ks_dashboard_data.name = this.ks_dashboard_data.ks_child_boards[self.ks_dashboard_data.ks_selected_board_id][0];
if (!isMobileOS()) {
$(self.header.el).addClass("ks_dashboard_header_sticky")
}
- if (Object.keys(self.ks_dashboard_data.ks_item_data).length===0){
+ if (Object.keys(self.ks_dashboard_data.ks_item_data).length === 0) {
$(self.header.el).find('.ks_dashboard_link').addClass("d-none");
$(self.header.el).find('.ks_dashboard_edit_layout').addClass("d-none");
}
- if(!self.state.ks_dashboard_manager){
+ if (!self.state.ks_dashboard_manager) {
$(self.header.el).find('#ks_dashboard_title').addClass("ks_user")
}
- self.ksRenderDashboardMainContent();
+ self.ksRenderDashboardMainContent();
}
- ksRenderDashboardMainContent(){
+ ksRenderDashboardMainContent() {
var self = this;
if (isMobileOS() && $('#ks_dn_layout_button :first-child').length > 0) {
$('.ks_am_element').append($('#ks_dn_layout_button :first-child')[0].innerText);
$(self.header.el).find("#ks_dn_layout_button").addClass("ks_hide");
}
- if (Object.keys(self.ks_dashboard_data.ks_item_data).length){
- // todo implement below mentioned function
+ if (Object.keys(self.ks_dashboard_data.ks_item_data).length) {
+ // todo implement below mentioned function
self._renderDateFilterDatePicker();
$(self.header.el).find('.ks_dashboard_link').removeClass("ks_hide");
} else if (!Object.keys(self.ks_dashboard_data.ks_item_data).length) {
@@ -417,48 +417,48 @@ export class KsDashboardNinja extends Component {
console.log("Print")
}
- loadDashboardData(date = false){
+ loadDashboardData(date = false) {
var self = this;
$(self.header.el).find(".apply-dashboard-date-filter").removeClass("ks_hide");
$(self.header.el).find(".clear-dashboard-date-filter").removeClass("ks_hide");
}
_KsGetDateValues() {
- var self = this;
- //Setting Date Filter Selected Option in Date Filter DropDown Menu
- var date_filter_selected = self.ks_dashboard_data.ks_date_filter_selection;
- if (self.ksDateFilterSelection == 'l_none'){
- var date_filter_selected = self.ksDateFilterSelection;
- }
- $(self.header.el).find('#' + date_filter_selected).addClass("ks_date_filter_selected");
- $(self.header.el).find('#ks_date_filter_selection').text(self.ks_date_filter_selections[date_filter_selected]);
-
- if (self.ks_dashboard_data.ks_date_filter_selection === 'l_custom') {
- var ks_end_date = self.ks_dashboard_data.ks_dashboard_end_date;
- var ks_start_date = self.ks_dashboard_data.ks_dashboard_start_date;
- var start_date = parseDateTime(ks_start_date, self.datetime_format)
- var end_date = parseDateTime(ks_end_date, self.datetime_format)
- self.state.ksDateFilterStartDate = start_date
- self.state.ksDateFilterEndDate = end_date
-
- $(self.header.el).find('.ks_date_input_fields').removeClass("ks_hide");
- $(self.header.el).find('.ks_date_filter_dropdown').addClass("ks_btn_first_child_radius");
- } else if (self.ks_dashboard_data.ks_date_filter_selection !== 'l_custom') {
- $(self.header.el).find('.ks_date_input_fields').addClass("ks_hide");
- }
+ var self = this;
+ //Setting Date Filter Selected Option in Date Filter DropDown Menu
+ var date_filter_selected = self.ks_dashboard_data.ks_date_filter_selection;
+ if (self.ksDateFilterSelection == 'l_none') {
+ var date_filter_selected = self.ksDateFilterSelection;
}
+ $(self.header.el).find('#' + date_filter_selected).addClass("ks_date_filter_selected");
+ $(self.header.el).find('#ks_date_filter_selection').text(self.ks_date_filter_selections[date_filter_selected]);
+
+ if (self.ks_dashboard_data.ks_date_filter_selection === 'l_custom') {
+ var ks_end_date = self.ks_dashboard_data.ks_dashboard_end_date;
+ var ks_start_date = self.ks_dashboard_data.ks_dashboard_start_date;
+ var start_date = parseDateTime(ks_start_date, self.datetime_format)
+ var end_date = parseDateTime(ks_end_date, self.datetime_format)
+ self.state.ksDateFilterStartDate = start_date
+ self.state.ksDateFilterEndDate = end_date
+
+ $(self.header.el).find('.ks_date_input_fields').removeClass("ks_hide");
+ $(self.header.el).find('.ks_date_filter_dropdown').addClass("ks_btn_first_child_radius");
+ } else if (self.ks_dashboard_data.ks_date_filter_selection !== 'l_custom') {
+ $(self.header.el).find('.ks_date_input_fields').addClass("ks_hide");
+ }
+ }
_ksOnDateFilterMenuSelect(e) {
if (e.target.id !== 'ks_date_selector_container') {
var self = this;
- $.each($('.ks_date_filter_selected'), function(idx, $itm) {
+ $.each($('.ks_date_filter_selected'), function (idx, $itm) {
$($itm).removeClass("ks_date_filter_selected")
});
$(e.target.parentElement).addClass("ks_date_filter_selected");
$('#ks_date_filter_selection').text(self.ks_date_filter_selections[e.target.parentElement.id]);
if (e.target.parentElement.id !== "l_custom") {
- e.target.parentElement.id === "l_none" ? self._onKsClearDateValues(true) : self._onKsApplyDateFilter();
+ e.target.parentElement.id === "l_none" ? self._onKsClearDateValues(true) : self._onKsApplyDateFilter();
$('.ks_date_input_fields').addClass("ks_hide");
$('.ks_date_filter_dropdown').removeClass("ks_btn_first_child_radius");
@@ -470,9 +470,9 @@ export class KsDashboardNinja extends Component {
$(self.header.el).find(".apply-dashboard-date-filter").removeClass("ks_hide");
$(self.header.el).find(".clear-dashboard-date-filter").removeClass("ks_hide");
}
- if(self.state.ksDateFilterSelection === 'l_none'){
+ if (self.state.ksDateFilterSelection === 'l_none') {
this.eraseCookie('FilterDateData' + self.ks_dashboard_id);
- }else{
+ } else {
this.setObjectInCookie('FilterDateData' + self.ks_dashboard_id, self.state.ksDateFilterSelection, 1);
}
}
@@ -500,26 +500,26 @@ export class KsDashboardNinja extends Component {
ksDateFilterStartDate: self.ksDateFilterStartDate,
ksDateFilterEndDate: self.ksDateFilterEndDate,
}
- self.dn_state['user_context']=context
- $(self.header.el).find(".apply-dashboard-date-filter").addClass("ks_hide");
- $(self.header.el).find(".clear-dashboard-date-filter").addClass("ks_hide");
- self.state.ksDateFilterSelection = $(self.header.el).find('.ks_date_filter_selected').attr('id');
- self.state.pre_defined_filter = {}
- self.state.custom_filter = {}
+ self.dn_state['user_context'] = context
+ $(self.header.el).find(".apply-dashboard-date-filter").addClass("ks_hide");
+ $(self.header.el).find(".clear-dashboard-date-filter").addClass("ks_hide");
+ self.state.ksDateFilterSelection = $(self.header.el).find('.ks_date_filter_selected').attr('id');
+ self.state.pre_defined_filter = {}
+ self.state.custom_filter = {}
} else {
if (start_date && end_date) {
- if (parseDateTime(start_date,self.datetime_format) <= parseDateTime(end_date, self.datetime_format)) {
-// var start_date = parseDateTime(start_date, self.datetime_format).format("YYYY-MM-DD H:m:s");
- var start_date = formatDateTime(parseDateTime(start_date, self.datetime_format), { format: "yyyy-MM-dd HH:mm:ss"})
+ if (parseDateTime(start_date, self.datetime_format) <= parseDateTime(end_date, self.datetime_format)) {
+ // var start_date = parseDateTime(start_date, self.datetime_format).format("YYYY-MM-DD H:m:s");
+ var start_date = formatDateTime(parseDateTime(start_date, self.datetime_format), { format: "yyyy-MM-dd HH:mm:ss" })
var end_date = formatDateTime(parseDateTime(end_date, self.datetime_format), { format: "yyyy-MM-dd HH:mm:ss" })
-// var end_date = formatDateTime(end_date, self.datetime_format).format("YYYY-MM-DD H:m:s");
- if (start_date === "Invalid date" || end_date === "Invalid date"){
+ // var end_date = formatDateTime(end_date, self.datetime_format).format("YYYY-MM-DD H:m:s");
+ if (start_date === "Invalid date" || end_date === "Invalid date") {
alert(_t("Invalid Date"));
- }else{
+ } else {
self.ksDateFilterSelection = $(self.header.el).find('.ks_date_filter_selected').attr('id');
self.ksDateFilterStartDate = start_date;
self.ksDateFilterEndDate = end_date;
- this.setObjectInCookie('custom_range' + self.ks_dashboard_id, {'start_date': start_date, 'end_date':end_date}, 1);
+ this.setObjectInCookie('custom_range' + self.ks_dashboard_id, { 'start_date': start_date, 'end_date': end_date }, 1);
var res = {};
for (const [key, value] of Object.entries(self.ks_dashboard_data.ks_item_data)) {
if (value.ks_dashboard_item_type != "ks_to_do") {
@@ -531,16 +531,16 @@ export class KsDashboardNinja extends Component {
ksDateFilterStartDate: self.ksDateFilterStartDate,
ksDateFilterEndDate: self.ksDateFilterEndDate,
}
- self.dn_state['user_context']=context
- $(self.header.el).find(".apply-dashboard-date-filter").addClass("ks_hide");
- $(self.header.el).find(".clear-dashboard-date-filter").addClass("ks_hide");
- self.state.ksDateFilterSelection = $(self.header.el).find('.ks_date_filter_selected').attr('id');
- this.setObjectInCookie('FilterDateData' + self.ks_dashboard_id, self.state.ksDateFilterSelection, 1);
- self.state.pre_defined_filter = {}
- self.state.custom_filter = {}
- self.state.ksDateFilterStartDate = parseDateTime(self.ksDateFilterStartDate,self.datetime_format);
- self.state.ksDateFilterEndDate = parseDateTime(self.ksDateFilterEndDate,self.datetime_format);
- }
+ self.dn_state['user_context'] = context
+ $(self.header.el).find(".apply-dashboard-date-filter").addClass("ks_hide");
+ $(self.header.el).find(".clear-dashboard-date-filter").addClass("ks_hide");
+ self.state.ksDateFilterSelection = $(self.header.el).find('.ks_date_filter_selected').attr('id');
+ this.setObjectInCookie('FilterDateData' + self.ks_dashboard_id, self.state.ksDateFilterSelection, 1);
+ self.state.pre_defined_filter = {}
+ self.state.custom_filter = {}
+ self.state.ksDateFilterStartDate = parseDateTime(self.ksDateFilterStartDate, self.datetime_format);
+ self.state.ksDateFilterEndDate = parseDateTime(self.ksDateFilterEndDate, self.datetime_format);
+ }
} else {
alert(_t("Start date should be less than end date"));
}
@@ -554,13 +554,13 @@ export class KsDashboardNinja extends Component {
var expires = "";
if (days) {
var date = new Date();
- date.setTime(date.getTime() + (days*24*60*60*1000));
+ date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
- setObjectInCookie(name, object, days) {
+ setObjectInCookie(name, object, days) {
var jsonString = JSON.stringify(object);
this.setCookie(name, jsonString, days);
}
@@ -582,7 +582,7 @@ export class KsDashboardNinja extends Component {
return jsonString ? JSON.parse(jsonString) : null;
}
- _onKsClearDateValues(ks_l_none=false) {
+ _onKsClearDateValues(ks_l_none = false) {
var self = this;
self.ksDateFilterSelection = 'l_none';
self.ksDateFilterStartDate = false;
@@ -598,12 +598,12 @@ export class KsDashboardNinja extends Component {
ksDateFilterStartDate: self.ksDateFilterStartDate,
ksDateFilterEndDate: self.ksDateFilterEndDate,
}
- self.dn_state['user_context']=context
- $('.ks_date_input_fields').addClass("ks_hide");
- $('.ks_date_filter_dropdown').removeClass("ks_btn_first_child_radius");
- self.state.ksDateFilterSelection = 'l_none';
- self.state.pre_defined_filter = {};
- self.state.custom_filter = {}
+ self.dn_state['user_context'] = context
+ $('.ks_date_input_fields').addClass("ks_hide");
+ $('.ks_date_filter_dropdown').removeClass("ks_btn_first_child_radius");
+ self.state.ksDateFilterSelection = 'l_none';
+ self.state.pre_defined_filter = {};
+ self.state.custom_filter = {}
$(self.header.el).find(".apply-dashboard-date-filter").addClass("ks_hide");
$(self.header.el).find(".clear-dashboard-date-filter").addClass("ks_hide");
@@ -620,7 +620,7 @@ export class KsDashboardNinja extends Component {
for (var i = 0; i < a.length; i++) {
a[i]['id'] = b[i];
}
- a.sort(function(a, b) {
+ a.sort(function (a, b) {
return (35 * a.y + a.x) - (35 * b.y + b.x);
});
for (var i = 0; i < a.length; i++) {
@@ -635,57 +635,57 @@ export class KsDashboardNinja extends Component {
}
onChartMoreInfoClick(e) {
- var self = this;
- var item_id = e.currentTarget.dataset.itemId;
- var item_data = self.ks_dashboard_data.ks_item_data[item_id];
- var groupBy = item_data.ks_chart_groupby_type === 'date_type' ? item_data.ks_chart_relation_groupby_name + ':' + item_data.ks_chart_date_groupby : item_data.ks_chart_relation_groupby_name;
- var domain = JSON.parse(item_data.ks_chart_data).previous_domain
+ var self = this;
+ var item_id = e.currentTarget.dataset.itemId;
+ var item_data = self.ks_dashboard_data.ks_item_data[item_id];
+ var groupBy = item_data.ks_chart_groupby_type === 'date_type' ? item_data.ks_chart_relation_groupby_name + ':' + item_data.ks_chart_date_groupby : item_data.ks_chart_relation_groupby_name;
+ var domain = JSON.parse(item_data.ks_chart_data).previous_domain
- if (item_data.ks_show_records) {
- if (item_data.action) {
+ if (item_data.ks_show_records) {
+ if (item_data.action) {
- if (!item_data.ks_is_client_action){
- var action = Object.assign({}, item_data.action);
- if (action.view_mode.includes('tree')) action.view_mode = action.view_mode.replace('tree', 'list');
- for (var i = 0; i < action.views.length; i++) action.views[i][1].includes('tree') ? action.views[i][1] = action.views[i][1].replace('tree', 'list') : action.views[i][1];
- action['domain'] = item_data.ks_domain || [];
- action['search_view_id'] = [action.search_view_id, 'search']
- }else{
- var action = Object.assign({}, item_data.action[0]);
- if (action.params){
- action.params.default_active_id || 'mailbox_inbox';
- }else{
- action.params = {
- 'default_active_id': 'mailbox_inbox'
- }
- action.context = {}
- action.context.params = {
- 'active_model': false
- };
- }
- }
+ if (!item_data.ks_is_client_action) {
+ var action = Object.assign({}, item_data.action);
+ if (action.view_mode.includes('tree')) action.view_mode = action.view_mode.replace('tree', 'list');
+ for (var i = 0; i < action.views.length; i++) action.views[i][1].includes('tree') ? action.views[i][1] = action.views[i][1].replace('tree', 'list') : action.views[i][1];
+ action['domain'] = item_data.ks_domain || [];
+ action['search_view_id'] = [action.search_view_id, 'search']
} else {
- var action = {
- name: _t(item_data.name),
- type: 'ir.actions.act_window',
- res_model: item_data.ks_model_name,
- domain: domain || [],
- context: {
- 'group_by': groupBy ? groupBy:false ,
- },
- views: [
- [false, 'list'],
- [false, 'form']
- ],
- view_mode: 'list',
- target: 'current',
+ var action = Object.assign({}, item_data.action[0]);
+ if (action.params) {
+ action.params.default_active_id || 'mailbox_inbox';
+ } else {
+ action.params = {
+ 'default_active_id': 'mailbox_inbox'
+ }
+ action.context = {}
+ action.context.params = {
+ 'active_model': false
+ };
}
}
- self.actionService.doAction(action, {
- on_reverse_breadcrumb: self.on_reverse_breadcrumb,
- });
+ } else {
+ var action = {
+ name: _t(item_data.name),
+ type: 'ir.actions.act_window',
+ res_model: item_data.ks_model_name,
+ domain: domain || [],
+ context: {
+ 'group_by': groupBy ? groupBy : false,
+ },
+ views: [
+ [false, 'list'],
+ [false, 'form']
+ ],
+ view_mode: 'list',
+ target: 'current',
+ }
}
+ self.actionService.doAction(action, {
+ on_reverse_breadcrumb: self.on_reverse_breadcrumb,
+ });
}
+ }
onKsDuplicateItemClick(e) {
@@ -693,23 +693,23 @@ export class KsDashboardNinja extends Component {
var ks_item_id = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).parent().attr('id');
var dashboard_id = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).find('.ks_dashboard_select').val();
var dashboard_name = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).find('.ks_dashboard_select option:selected').text();
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/copy",{
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/copy", {
model: 'ks_dashboard_ninja.item',
method: 'copy',
args: [parseInt(ks_item_id), {
'ks_dashboard_ninja_board_id': parseInt(dashboard_id)
}],
- kwargs:{},
- }).then(function(result) {
- self.notification.add(_t('Selected item is duplicated to ' + dashboard_name + ' .'),{
- title:_t("Item Duplicated"),
+ kwargs: {},
+ }).then(function (result) {
+ self.notification.add(_t('Selected item is duplicated to ' + dashboard_name + ' .'), {
+ title: _t("Item Duplicated"),
type: 'success',
});
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
- })
- e.stopPropagation()
+ })
+ e.stopPropagation()
}
@@ -718,27 +718,27 @@ export class KsDashboardNinja extends Component {
var ks_item_id = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).parent().attr('id');
var dashboard_id = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).find('.ks_dashboard_select').val();
var dashboard_name = $($(e.target).parentsUntil(".ks_dashboarditem_id").slice(-1)[0]).find('.ks_dashboard_select option:selected').text();
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/write",{
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/write", {
model: 'ks_dashboard_ninja.item',
method: 'write',
args: [parseInt(ks_item_id), {
'ks_dashboard_ninja_board_id': parseInt(dashboard_id)
}],
- kwargs:{}
- }).then(function(result) {
- self.notification.add(_t('Selected item is moved to ' + dashboard_name + ' .'),{
- title:_t("Item Moved"),
+ kwargs: {}
+ }).then(function (result) {
+ self.notification.add(_t('Selected item is moved to ' + dashboard_name + ' .'), {
+ title: _t("Item Moved"),
type: 'success',
});
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
});
e.stopPropagation()
}
- _onKsItemClick(e){
+ _onKsItemClick(e) {
var self = this;
// To Handle only allow item to open when not clicking on item
if (self.ksAllowItemClick) {
@@ -749,25 +749,25 @@ export class KsDashboardNinja extends Component {
if (item_data && item_data.ks_show_records && item_data.ks_data_calculation_type != 'query') {
if (item_data.action) {
- if (!item_data.ks_is_client_action){
+ if (!item_data.ks_is_client_action) {
var action = Object.assign({}, item_data.action);
if (action.view_mode.includes('tree')) action.view_mode = action.view_mode.replace('tree', 'list');
for (var i = 0; i < action.views.length; i++) action.views[i][1].includes('tree') ? action.views[i][1] = action.views[i][1].replace('tree', 'list') : action.views[i][1];
action['domain'] = item_data.ks_domain || [];
action['search_view_id'] = [action.search_view_id, 'search']
- }else{
+ } else {
var action = Object.assign({}, item_data.action[0]);
- if (action.params){
+ if (action.params) {
action.params.default_active_id || 'mailbox_inbox';
- }else{
- action.params = {
+ } else {
+ action.params = {
'default_active_id': 'mailbox_inbox'
- }
- action.context = {}
- action.context.params = {
- 'active_model': false
- };
}
+ action.context = {}
+ action.context.params = {
+ 'active_model': false
+ };
+ }
}
} else {
@@ -785,9 +785,9 @@ export class KsDashboardNinja extends Component {
}
}
- if (item_data.ks_is_client_action){
- self.actionService.doAction(action,{})
- }else{
+ if (item_data.ks_is_client_action) {
+ self.actionService.doAction(action, {})
+ } else {
self.actionService.doAction(action, {
on_reverse_breadcrumb: self.on_reverse_breadcrumb,
});
@@ -798,7 +798,7 @@ export class KsDashboardNinja extends Component {
self.ksAllowItemClick = true;
}
}
- ks_dashboard_item_action(e){
+ ks_dashboard_item_action(e) {
this.ksAllowItemClick = false;
}
@@ -813,63 +813,63 @@ export class KsDashboardNinja extends Component {
ks_delete_item(id, item) {
var self = this;
this.dialogService.add(ConfirmationDialog, {
- body: _t("Are you sure that you want to remove this item?"),
- confirm: () => {
- self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/unlink",{
- model: 'ks_dashboard_ninja.item',
- method: 'unlink',
- args: [id],
- kwargs:{}
- }).then(function(result) {
+ body: _t("Are you sure that you want to remove this item?"),
+ confirm: () => {
+ self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/unlink", {
+ model: 'ks_dashboard_ninja.item',
+ method: 'unlink',
+ args: [id],
+ kwargs: {}
+ }).then(function (result) {
- // Clean Item Remove Process.
- self.ks_remove_update_interval();
- delete self.ks_dashboard_data.ks_item_data[id];
- self.grid.removeWidget(item);
+ // Clean Item Remove Process.
+ self.ks_remove_update_interval();
+ delete self.ks_dashboard_data.ks_item_data[id];
+ self.grid.removeWidget(item);
- if (Object.keys(self.ks_dashboard_data.ks_item_data).length > 0) {
- self._ksSaveCurrentLayout();
- }
+ if (Object.keys(self.ks_dashboard_data.ks_item_data).length > 0) {
+ self._ksSaveCurrentLayout();
+ }
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
});
},
- cancel: () => {},
- });
- }
- removeitems(){
- var self = this;
- var ks_items = Object.values((self.main_body.el).querySelectorAll(".grid-stack-item"));
- ks_items.forEach((item) =>{
- self.grid.removeWidget(item);
- })
- }
+ cancel: () => { },
+ });
+ }
+ removeitems() {
+ var self = this;
+ var ks_items = Object.values((self.main_body.el).querySelectorAll(".grid-stack-item"));
+ ks_items.forEach((item) => {
+ self.grid.removeWidget(item);
+ })
+ }
- _ksSetCurrentLayoutClick(){
+ _ksSetCurrentLayoutClick() {
var self = this;
this.ks_dashboard_data.ks_selected_board_id = $(self.header.el).find("#ks_dashboard_layout_dropdown_container .ks_layout_selected").data('ks_layout_id');
$(self.header.el).find(".ks_dashboard_top_menu .ks_dashboard_top_settings").removeClass("ks_hide");
$(self.header.el).find(".ks_dashboard_top_menu .ks_am_content_element").removeClass("ks_hide");
$(self.header.el).find(".ks_dashboard_layout_edit_mode_settings").addClass("ks_hide");
-// $('#ks_dashboard_title_input').val(this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][0]);
+ // $('#ks_dashboard_title_input').val(this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][0]);
this.ks_dashboard_data.name = this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][0];
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board",{
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board", {
model: 'ks_dashboard_ninja.board',
method: 'update_child_board',
args: ['update', self.ks_dashboard_id, {
"ks_selected_board_id": this.ks_dashboard_data.ks_selected_board_id,
}],
- kwargs:{},
- }).then(function(result){
+ kwargs: {},
+ }).then(function (result) {
window.location.reload();
});
}
- _ksSetDiscardCurrentLayoutClick(){
+ _ksSetDiscardCurrentLayoutClick() {
this.ksOnLayoutSelection(this.ks_dashboard_data.ks_selected_board_id);
$(this.header.el).find(".ks_dashboard_top_menu .ks_dashboard_top_settings").removeClass("ks_hide");
$(this.header.el).find(".ks_dashboard_top_menu .ks_am_content_element").removeClass("ks_hide");
@@ -883,32 +883,32 @@ export class KsDashboardNinja extends Component {
var model = 'ks_dashboard_ninja.child_board';
var rec_id = self.ks_dashboard_data.ks_gridstack_config_id;
self.ks_dashboard_data.ks_gridstack_config = JSON.stringify(grid_config);
- if(this.ks_dashboard_data.ks_selected_board_id && this.ks_dashboard_data.ks_child_boards){
+ if (this.ks_dashboard_data.ks_selected_board_id && this.ks_dashboard_data.ks_child_boards) {
this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][1] = JSON.stringify(grid_config);
- if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default'){
+ if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default') {
rec_id = parseInt(this.ks_dashboard_data.ks_selected_board_id)
}
}
if (!isMobileOS()) {
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.child_board/write",{
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.child_board/write", {
model: model,
method: 'write',
args: [rec_id, {
"ks_gridstack_config": JSON.stringify(grid_config)
}],
- kwargs:{},
+ kwargs: {},
})
}
}
- ks_get_current_gridstack_config(){
+ ks_get_current_gridstack_config() {
var self = this;
- if (document.querySelector('.grid-stack') && document.querySelector('.grid-stack').gridstack){
+ if (document.querySelector('.grid-stack') && document.querySelector('.grid-stack').gridstack) {
var items = document.querySelector('.grid-stack').gridstack.el.gridstack.engine.nodes;
}
var grid_config = {}
- if (items){
+ if (items) {
for (var i = 0; i < items.length; i++) {
grid_config[items[i].id] = {
'x': items[i].x,
@@ -921,26 +921,26 @@ export class KsDashboardNinja extends Component {
return grid_config;
}
- ////////////////////////////// Export functions ////////////////////////////////////////////
+ ////////////////////////////// Export functions ////////////////////////////////////////////
async ksChartExportXlsCsv(e) {
var chart_id = e.currentTarget.dataset.chartId;
var name = this.ks_dashboard_data.ks_item_data[chart_id].name;
var context = this.getContext();
- if (this.ks_dashboard_data.ks_item_data[chart_id].ks_dashboard_item_type === 'ks_list_view'){
- var params = this.ksGetParamsForItemFetch(parseInt(chart_id));
- var data = {
- "header": name,
- "chart_data": this.ks_dashboard_data.ks_item_data[chart_id].ks_list_view_data,
- "ks_item_id": chart_id,
- "ks_export_boolean": true,
- "context": context,
- 'params':params,
- }
- }else{
+ if (this.ks_dashboard_data.ks_item_data[chart_id].ks_dashboard_item_type === 'ks_list_view') {
+ var params = this.ksGetParamsForItemFetch(parseInt(chart_id));
+ var data = {
+ "header": name,
+ "chart_data": this.ks_dashboard_data.ks_item_data[chart_id].ks_list_view_data,
+ "ks_item_id": chart_id,
+ "ks_export_boolean": true,
+ "context": context,
+ 'params': params,
+ }
+ } else {
var data = {
"header": name,
"chart_data": this.ks_dashboard_data.ks_item_data[chart_id].ks_chart_data,
- }
+ }
}
const blockUI = new BlockUI();
await download({
@@ -953,7 +953,7 @@ export class KsDashboardNinja extends Component {
});
}
- ksChartExportPdf (e){
+ ksChartExportPdf(e) {
var self = this;
var chart_id = e.currentTarget.dataset.chartId;
var name = this.ks_dashboard_data.ks_item_data[chart_id].name;
@@ -961,32 +961,32 @@ export class KsDashboardNinja extends Component {
base64_image = $($(e.target).parentsUntil(".grid-stack-item").slice(-1)[0]).find('.ks_chart_card_body')[0]
var $ks_el = $($($(self.main_body.el).find(".grid-stack-item[gs-id=" + chart_id + "]")).find('.ks_chart_card_body'));
var ks_height = $ks_el.height()
- html2canvas(base64_image, {useCORS: true, allowTaint: false}).then(function(canvas){
+ html2canvas(base64_image, { useCORS: true, allowTaint: false }).then(function (canvas) {
var ks_image = canvas.toDataURL("image/png");
var ks_image_def = {
- content: [{
+ content: [{
image: ks_image,
width: 500,
height: ks_height,
- }],
- images: {
- bee: ks_image
- }
- };
- pdfMake.createPdf(ks_image_def).download(name + '.pdf');
+ }],
+ images: {
+ bee: ks_image
+ }
+ };
+ pdfMake.createPdf(ks_image_def).download(name + '.pdf');
})
}
- ksChartExportimage(e){
+ ksChartExportimage(e) {
var self = this;
var chart_id = e.currentTarget.dataset.chartId;
var name = this.ks_dashboard_data.ks_item_data[chart_id].name;
var base64_image
base64_image = $($(e.target).parentsUntil(".grid-stack-item").slice(-1)[0]).find(".ks_chart_card_body")[0]
- html2canvas(base64_image,{useCORS: true, allowTaint: false}).then(function(canvas){
+ html2canvas(base64_image, { useCORS: true, allowTaint: false }).then(function (canvas) {
var ks_image = canvas.toDataURL("image/png");
const link = document.createElement('a');
- link.href = ks_image;
+ link.href = ks_image;
link.download = name + 'png'
document.body.appendChild(link);
link.click()
@@ -1021,55 +1021,55 @@ export class KsDashboardNinja extends Component {
$(e.currentTarget).parent().addClass('ks_date_filter_selected')
var item_data = self.ks_dashboard_data.ks_item_data[$parent.data().itemId];
var chart_data = JSON.parse(item_data.ks_chart_data);
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/write",{
- model: 'ks_dashboard_ninja.item',
- method: 'write',
- args: [$parent.data().itemId, {
- "ks_chart_item_color": e.currentTarget.dataset.chartColor
- }],
- kwargs:{}
- }).then(function() {
- self.ks_dashboard_data.ks_item_data[$parent.data().itemId]['ks_chart_item_color'] = e.target.dataset.chartColor;
- $(self.main_body.el).find(".grid-stack-item[gs-id=" + item_data.id + "]").find(".card-body").remove();
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/write", {
+ model: 'ks_dashboard_ninja.item',
+ method: 'write',
+ args: [$parent.data().itemId, {
+ "ks_chart_item_color": e.currentTarget.dataset.chartColor
+ }],
+ kwargs: {}
+ }).then(function () {
+ self.ks_dashboard_data.ks_item_data[$parent.data().itemId]['ks_chart_item_color'] = e.target.dataset.chartColor;
+ $(self.main_body.el).find(".grid-stack-item[gs-id=" + item_data.id + "]").find(".card-body").remove();
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
})
}
}
- ksOnDashboardExportClick(ev){
+ ksOnDashboardExportClick(ev) {
ev.preventDefault();
- var self= this;
+ var self = this;
var dashboard_id = JSON.stringify(this.ks_dashboard_id);
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_dashboard_export", {
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_dashboard_export", {
model: 'ks_dashboard_ninja.board',
method: "ks_dashboard_export",
args: [dashboard_id],
- kwargs: {dashboard_id: dashboard_id}
- }).then(function(result) {
+ kwargs: { dashboard_id: dashboard_id }
+ }).then(function (result) {
var name = "dashboard_ninja";
var data = {
"header": name,
"dashboard_data":
- result,
+ result,
}
download({
- data: {
- data:JSON.stringify(data)
- },
+ data: {
+ data: JSON.stringify(data)
+ },
url: '/ks_dashboard_ninja/export/dashboard_json',
});
});
}
- stoppropagation(ev){
-// ev.stopPropagation();
+ stoppropagation(ev) {
+ // ev.stopPropagation();
this.ksAllowItemClick = false;
}
- ksOnDashboardImportClick(ev){
+ ksOnDashboardImportClick(ev) {
ev.preventDefault();
var self = this;
var dashboard_id = this.ks_dashboard_id;
@@ -1080,29 +1080,29 @@ export class KsDashboardNinja extends Component {
kwargs: {
dashboard_id: dashboard_id
}
- }).then((result)=>{
- self.actionService.doAction(result)
+ }).then((result) => {
+ self.actionService.doAction(result)
});
}
- _ksOnDnLayoutMenuSelect(ev){
+ _ksOnDnLayoutMenuSelect(ev) {
var selected_layout_id = $(ev.currentTarget).data('ks_layout_id');
this.ksOnLayoutSelection(selected_layout_id);
}
- ksOnLayoutSelection(layout_id){
+ ksOnLayoutSelection(layout_id) {
var self = this;
var selected_layout_name = this.ks_dashboard_data.ks_child_boards[layout_id][0];
var selected_layout_grid_config = this.ks_dashboard_data.ks_child_boards[layout_id][1];
this.gridstackConfig = JSON.parse(selected_layout_grid_config);
- Object.entries(this.gridstackConfig).forEach((x,y)=>{
- self.grid.update($(self.main_body.el).find(".grid-stack-item[gs-id=" + x[0] + "]")[0],{ x:x[1]['x'], y:x[1]['y'], w:x[1]['w'], h:x[1]['h'],autoPosition:false});
+ Object.entries(this.gridstackConfig).forEach((x, y) => {
+ self.grid.update($(self.main_body.el).find(".grid-stack-item[gs-id=" + x[0] + "]")[0], { x: x[1]['x'], y: x[1]['y'], w: x[1]['w'], h: x[1]['h'], autoPosition: false });
});
-// this.ks_dashboard_data.ks_selected_board_id = layout_id;
+ // this.ks_dashboard_data.ks_selected_board_id = layout_id;
$(self.header.el).find("#ks_dashboard_layout_dropdown_container .ks_layout_selected").removeClass("ks_layout_selected");
- $(self.header.el).find("li.ks_dashboard_layout_event[data-ks_layout_id='"+ layout_id + "']").addClass('ks_layout_selected');
+ $(self.header.el).find("li.ks_dashboard_layout_event[data-ks_layout_id='" + layout_id + "']").addClass('ks_layout_selected');
$(self.header.el).find("#ks_dn_layout_button span:first-child").text(selected_layout_name);
$(self.header.el).find(".ks_dashboard_top_menu .ks_dashboard_edit_layout").addClass("ks_hide");
$(self.header.el).find(".ks_dashboard_top_menu .ks_am_content_element").addClass("ks_hide");
@@ -1110,7 +1110,7 @@ export class KsDashboardNinja extends Component {
$(self.header.el).find(".ks_dashboard_layout_edit_mode_settings").removeClass("ks_hide");
}
- _onKsSaveLayoutClick(){
+ _onKsSaveLayoutClick() {
this.grid.setStatic(true)
var self = this;
// Have to save dashboard here
@@ -1120,28 +1120,28 @@ export class KsDashboardNinja extends Component {
var model = 'ks_dashboard_ninja.board';
var rec_id = self.ks_dashboard_id;
- if(this.ks_dashboard_data.ks_selected_board_id && this.ks_dashboard_data.ks_child_boards){
+ if (this.ks_dashboard_data.ks_selected_board_id && this.ks_dashboard_data.ks_child_boards) {
this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][0] = dashboard_title;
- if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default'){
+ if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default') {
model = 'ks_dashboard_ninja.child_board';
rec_id = this.ks_dashboard_data.ks_selected_board_id;
}
}
var new_model = `web/dataset/call_kw/${model}/write`
- this._rpc(new_model,{
+ this._rpc(new_model, {
model: model,
method: 'write',
args: [rec_id, {
'name': dashboard_title
}],
- kwargs : {},
+ kwargs: {},
})
}
if (this.ks_dashboard_data.ks_item_data) self._ksSaveCurrentLayout();
self._ksRenderActiveMode();
}
- _onKsCancelLayoutClick(){
+ _onKsCancelLayoutClick() {
var self = this;
// render page again
@@ -1154,13 +1154,13 @@ export class KsDashboardNinja extends Component {
var self = this;
self.grid.setStatic(true)
var dashboard_title = $('#ks_dashboard_title_input').val();
- if (dashboard_title ==="") {
+ if (dashboard_title === "") {
self.call('notification', 'notify', {
message: "Dashboard Name is required to save as New Layout.",
type: 'warning',
});
- } else{
- if (!self.ks_dashboard_data.ks_child_boards){
+ } else {
+ if (!self.ks_dashboard_data.ks_child_boards) {
self.ks_dashboard_data.ks_child_boards = {
'ks_default': [this.ks_dashboard_data.name, self.ks_dashboard_data.ks_gridstack_config]
}
@@ -1168,7 +1168,7 @@ export class KsDashboardNinja extends Component {
this.ks_dashboard_data.name = dashboard_title;
var grid_config = self.ks_get_current_gridstack_config();
- this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board",{
+ this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board", {
model: 'ks_dashboard_ninja.board',
method: 'update_child_board',
args: ['create', self.ks_dashboard_id, {
@@ -1178,24 +1178,24 @@ export class KsDashboardNinja extends Component {
"ks_active": true,
"company_id": self.ks_dashboard_data.ks_company_id,
}],
- kwargs : {},
- }).then(function(res_id){
+ kwargs: {},
+ }).then(function (res_id) {
self.ks_update_child_board_value(dashboard_title, res_id, grid_config),
- self._ksRenderActiveMode();
+ self._ksRenderActiveMode();
window.location.reload();
});
}
}
- ks_update_child_board_value(dashboard_title, res_id, grid_config){
+ ks_update_child_board_value(dashboard_title, res_id, grid_config) {
var self = this;
var child_board_id = res_id.toString();
self.ks_dashboard_data.ks_selected_board_id = child_board_id;
var update_data = {};
update_data[child_board_id] = [dashboard_title, JSON.stringify(grid_config)];
- self.ks_dashboard_data.ks_child_boards = Object.assign(update_data,self.ks_dashboard_data.ks_child_boards);
+ self.ks_dashboard_data.ks_child_boards = Object.assign(update_data, self.ks_dashboard_data.ks_child_boards);
}
- _ksRenderActiveMode(){
+ _ksRenderActiveMode() {
var self = this
self.ks_mode = 'active';
@@ -1209,7 +1209,7 @@ export class KsDashboardNinja extends Component {
ks_child_boards: self.ks_dashboard_data.ks_child_boards,
ks_multi_layout: self.ks_dashboard_data.multi_layouts,
ks_dash_name: self.ks_dashboard_data.name,
- self:self,
+ self: self,
}));
$('#ks_dashboard_title .ks_am_element').replaceWith($layout_container);
$('#ks_dashboard_title_label').replaceWith($layout_container);
@@ -1250,10 +1250,10 @@ export class KsDashboardNinja extends Component {
self.grid.commit();
}
- ks_remove_update_interval(){
+ ks_remove_update_interval() {
var self = this;
if (self.ksUpdateDashboard) {
- Object.values(self.ksUpdateDashboard).forEach(function(itemInterval) {
+ Object.values(self.ksUpdateDashboard).forEach(function (itemInterval) {
clearInterval(itemInterval);
});
self.ksUpdateDashboard = {};
@@ -1267,7 +1267,7 @@ export class KsDashboardNinja extends Component {
self._ksRenderEditMode();
}
- _ksRenderEditMode(){
+ _ksRenderEditMode() {
var self = this;
self.ks_mode = 'edit';
self.ks_remove_update_interval();
@@ -1290,7 +1290,7 @@ export class KsDashboardNinja extends Component {
$(self.main_body.el).find('.ks_dashboard_item_l5').removeClass('ks_dashboard_item_header_hover');
$(self.main_body.el).find('.ks_dashboard_item_button_container').removeClass('ks_dashboard_item_header_hover');
-// $(self.header.el).find('.ks_dashboard_link').addClass("ks_hide")
+ // $(self.header.el).find('.ks_dashboard_link').addClass("ks_hide")
$(self.header.el).find('.ks_dashboard_top_settings').addClass("ks_hide")
$(self.header.el).find('.ks_dashboard_edit_mode_settings').removeClass("ks_hide")
@@ -1307,27 +1307,27 @@ export class KsDashboardNinja extends Component {
onAddItemTypeClick(e) {
var self = this;
- self.dialogService.add(FormViewDialog,{
- resModel: 'ks_dashboard_ninja.item',
- context: {
- 'ks_dashboard_id': self.ks_dashboard_id,
- 'ks_dashboard_item_type': 'ks_tile',
- 'form_view_ref': 'ks_dashboard_ninja.item_form_view',
- 'form_view_initial_mode': 'edit',
- 'ks_set_interval': self.ks_dashboard_data.ks_set_interval,
- 'ks_data_formatting':self.ks_dashboard_data.ks_data_formatting,
- 'ks_form_view' : true
- },
- onRecordSaved:()=>{
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
- $('body').removeClass('ks_dn_create_chart')
+ self.dialogService.add(FormViewDialog, {
+ resModel: 'ks_dashboard_ninja.item',
+ context: {
+ 'ks_dashboard_id': self.ks_dashboard_id,
+ 'ks_dashboard_item_type': 'ks_tile',
+ 'form_view_ref': 'ks_dashboard_ninja.item_form_view',
+ 'form_view_initial_mode': 'edit',
+ 'ks_set_interval': self.ks_dashboard_data.ks_set_interval,
+ 'ks_data_formatting': self.ks_dashboard_data.ks_data_formatting,
+ 'ks_form_view': true
+ },
+ onRecordSaved: () => {
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
+ $('body').removeClass('ks_dn_create_chart')
- },
- onRecordDiscarded:()=>{
- $('body').removeClass('ks_dn_create_chart')
- }
- });
+ },
+ onRecordDiscarded: () => {
+ $('body').removeClass('ks_dn_create_chart')
+ }
+ });
}
@@ -1336,24 +1336,24 @@ export class KsDashboardNinja extends Component {
$('.ks_input_import_item_button').click();
}
- ksImportItem(e) {
+ ksImportItem(e) {
var self = this;
var fileReader = new FileReader();
- fileReader.onload = function() {
+ fileReader.onload = function () {
$('.ks_input_import_item_button').val('');
self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_import_item", {
- model: 'ks_dashboard_ninja.board',
- method: 'ks_import_item',
- args: [self.ks_dashboard_id],
- kwargs: {
- file: fileReader.result,
- dashboard_id: self.ks_dashboard_id
- }
- }).then(function(result) {
+ model: 'ks_dashboard_ninja.board',
+ method: 'ks_import_item',
+ args: [self.ks_dashboard_id],
+ kwargs: {
+ file: fileReader.result,
+ dashboard_id: self.ks_dashboard_id
+ }
+ }).then(function (result) {
if (result === "Success") {
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
}
});
};
@@ -1361,8 +1361,8 @@ export class KsDashboardNinja extends Component {
}
- ksOnDashboardSettingClick(ev){
- var self= this;
+ ksOnDashboardSettingClick(ev) {
+ var self = this;
var dashboard_id = this.ks_dashboard_id;
var action = {
name: _t('ks_open_setting'),
@@ -1370,7 +1370,7 @@ export class KsDashboardNinja extends Component {
res_model: 'ks_dashboard_ninja.board',
res_id: dashboard_id,
domain: [],
- context: {'create':false},
+ context: { 'create': false },
views: [
[false, 'form']
],
@@ -1380,10 +1380,10 @@ export class KsDashboardNinja extends Component {
self.actionService.doAction(action)
}
- ksOnDashboardDeleteClick(ev){
+ ksOnDashboardDeleteClick(ev) {
ev.preventDefault();
var dashboard_id = this.ks_dashboard_id;
- var self= this;
+ var self = this;
self.dialogService.add(ConfirmationDialog, {
body: _t("Are you sure you want to delete this dashboard ?"),
confirm: () => {
@@ -1391,16 +1391,16 @@ export class KsDashboardNinja extends Component {
model: 'ks.dashboard.delete.wizard',
method: "ks_delete_record",
args: [self.ks_dashboard_id],
- kwargs: {dashboard_id: dashboard_id}
- }).then((result)=>{
- self.actionService.doAction(result)
+ kwargs: { dashboard_id: dashboard_id }
+ }).then((result) => {
+ self.actionService.doAction(result)
});
},
});
}
- ksOnDashboardCreateClick(ev){
- var self= this;
+ ksOnDashboardCreateClick(ev) {
+ var self = this;
var action = {
name: _t('Create Dashboard'),
type: 'ir.actions.act_window',
@@ -1417,97 +1417,97 @@ export class KsDashboardNinja extends Component {
self.actionService.doAction(action)
}
- ksOnDashboardDuplicateClick(ev){
+ ksOnDashboardDuplicateClick(ev) {
ev.preventDefault();
- var self= this;
+ var self = this;
var dashboard_id = this.ks_dashboard_id;
this._rpc('/web/dataset/call_kw/ks.dashboard.duplicate.wizard/DuplicateDashBoard', {
model: 'ks.dashboard.duplicate.wizard',
method: "DuplicateDashBoard",
args: [self.ks_dashboard_id],
kwargs: {}
- }).then((result)=>{
+ }).then((result) => {
self.actionService.doAction(result)
});
- }
+ }
onEditItemTypeClick(ev) {
this.ksAllowItemClick = false;
- var self =this
- if(ev.currentTarget.dataset.itemId){
- self.dialogService.add(FormViewDialog,{
+ var self = this
+ if (ev.currentTarget.dataset.itemId) {
+ self.dialogService.add(FormViewDialog, {
resModel: 'ks_dashboard_ninja.item',
- resId : parseInt(ev.currentTarget.dataset.itemId),
- context: {
- 'form_view_ref': 'ks_dashboard_ninja.item_form_view',
- 'form_view_initial_mode': 'edit',
- 'ks_form_view' :true
- },
- onRecordSaved:()=>{
+ resId: parseInt(ev.currentTarget.dataset.itemId),
+ context: {
+ 'form_view_ref': 'ks_dashboard_ninja.item_form_view',
+ 'form_view_initial_mode': 'edit',
+ 'ks_form_view': true
+ },
+ onRecordSaved: () => {
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
- $('body').removeClass('ks_dn_create_chart')
- },
- onRecordDiscarded:()=>{
- $('body').removeClass('ks_dn_create_chart')
- }
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
+ $('body').removeClass('ks_dn_create_chart')
+ },
+ onRecordDiscarded: () => {
+ $('body').removeClass('ks_dn_create_chart')
+ }
});
}
}
- kscreateaiitem(ev){
- var self= this;
- self.dialogService.add(FormViewDialog,{
- resModel: 'ks_dashboard_ninja.arti_int',
- context: {
- 'ks_dashboard_id': self.ks_dashboard_id,
- 'ks_form_view' : true
- },
- });
- }
- kscreateaidashboard(ev){
- var self= this;
+ kscreateaiitem(ev) {
+ var self = this;
+ self.dialogService.add(FormViewDialog, {
+ resModel: 'ks_dashboard_ninja.arti_int',
+ context: {
+ 'ks_dashboard_id': self.ks_dashboard_id,
+ 'ks_form_view': true
+ },
+ });
+ }
+ kscreateaidashboard(ev) {
+ var self = this;
var action = {
- name: _t('Generate Dashboard with AI'),
- type: 'ir.actions.act_window',
- res_model: 'ks_dashboard_ninja.ai_dashboard',
- domain: [],
- context: {
- 'ks_dashboard_id':this.ks_dashboard_id
- },
- views: [
- [false, 'form']
- ],
- view_mode: 'form',
- target: 'new',
- }
- self.actionService.doAction(action)
+ name: _t('Generate Dashboard with AI'),
+ type: 'ir.actions.act_window',
+ res_model: 'ks_dashboard_ninja.ai_dashboard',
+ domain: [],
+ context: {
+ 'ks_dashboard_id': this.ks_dashboard_id
+ },
+ views: [
+ [false, 'form']
+ ],
+ view_mode: 'form',
+ target: 'new',
}
- ks_gen_ai_analysis(ev){
+ self.actionService.doAction(action)
+ }
+ ks_gen_ai_analysis(ev) {
var self = this;
var ks_items = Object.values(self.ks_dashboard_data.ks_item_data);
var ks_items_explain = []
var ks_rest_items = []
- if (ks_items.length>0){
- ks_items.map((item)=>{
- if (!item.ks_ai_analysis){
+ if (ks_items.length > 0) {
+ ks_items.map((item) => {
+ if (!item.ks_ai_analysis) {
ks_items_explain.push({
- name:item.name,
- id:item.id,
- ks_chart_data:item.ks_chart_data?{...JSON.parse(item.ks_chart_data),...{domains:[],previous_domain:[]}}:item.ks_chart_data,
- ks_list_view_data:item.ks_list_view_data?JSON.parse(item.ks_list_view_data):item.ks_list_view_data,
- item_type:item.ks_dashboard_item_type,
- groupedby:item.ks_chart_relation_groupby_name,
- subgroupedby:item.ks_chart_relation_sub_groupby_name,
- stacked_bar_chart:item.ks_bar_chart_stacked,
- count_type:item.ks_record_count_type,
- count:item.ks_record_count,
- model_name:item.ks_model_display_name,
- kpi_data:item.ks_kpi_data
+ name: item.name,
+ id: item.id,
+ ks_chart_data: item.ks_chart_data ? { ...JSON.parse(item.ks_chart_data), ...{ domains: [], previous_domain: [] } } : item.ks_chart_data,
+ ks_list_view_data: item.ks_list_view_data ? JSON.parse(item.ks_list_view_data) : item.ks_list_view_data,
+ item_type: item.ks_dashboard_item_type,
+ groupedby: item.ks_chart_relation_groupby_name,
+ subgroupedby: item.ks_chart_relation_sub_groupby_name,
+ stacked_bar_chart: item.ks_bar_chart_stacked,
+ count_type: item.ks_record_count_type,
+ count: item.ks_record_count,
+ model_name: item.ks_model_display_name,
+ kpi_data: item.ks_kpi_data
})
}
- else{
+ else {
ks_rest_items.push(item)
}
@@ -1515,77 +1515,77 @@ export class KsDashboardNinja extends Component {
this.dialogService.add(ConfirmationDialog, {
body: _t("Do you agree that AI should be used to produce the explanation? It will take a few minutes to finish the process?"),
confirm: () => {
- self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_generate_analysis",{
+ self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_generate_analysis", {
model: 'ks_dashboard_ninja.arti_int',
method: 'ks_generate_analysis',
- args: [ks_items_explain,ks_rest_items,self.ks_dashboard_id],
- kwargs:{},
- }).then(function(result) {
- if (result){
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
- }
- });
+ args: [ks_items_explain, ks_rest_items, self.ks_dashboard_id],
+ kwargs: {},
+ }).then(function (result) {
+ if (result) {
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
+ }
+ });
}
- });
- }else{
- self.notification.add(_t('Plese make few items to explain with AI'),{
- title:_t("Failed"),
+ });
+ } else {
+ self.notification.add(_t('Plese make few items to explain with AI'), {
+ title: _t("Failed"),
type: 'warning',
});
}
}
- ks_switch_default_dashboard(ev){
+ ks_switch_default_dashboard(ev) {
var self = this;
- if (self.ks_dashboard_data.ks_ai_explain_dash){
- self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_switch_default_dashboard",{
- model: 'ks_dashboard_ninja.arti_int',
- method: 'ks_switch_default_dashboard',
- args: [self.ks_dashboard_id],
- kwargs:{},
- }).then(function(result) {
- var js_id = self.actionService.currentController.jsId
- self.actionService.restore(js_id)
- });
+ if (self.ks_dashboard_data.ks_ai_explain_dash) {
+ self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_switch_default_dashboard", {
+ model: 'ks_dashboard_ninja.arti_int',
+ method: 'ks_switch_default_dashboard',
+ args: [self.ks_dashboard_id],
+ kwargs: {},
+ }).then(function (result) {
+ var js_id = self.actionService.currentController.jsId
+ self.actionService.restore(js_id)
+ });
}
}
- async speak_once(ev,item){
+ async speak_once(ev, item) {
this.ksAllowItemClick = false;
ev.preventDefault()
var ks_audio = ev.currentTarget
- $(document.querySelectorAll('audio')).each((index,item)=>{
- if ($(item).attr('src') && $(ks_audio).find('audio').attr('src') != $(item).attr('src')){
+ $(document.querySelectorAll('audio')).each((index, item) => {
+ if ($(item).attr('src') && $(ks_audio).find('audio').attr('src') != $(item).attr('src')) {
item.pause()
$(item).parent().find('.fa.fa-volume-up').addClass('d-none');
- if (!$(item).parent().find(".fa-pause").length){
+ if (!$(item).parent().find(".fa-pause").length) {
$(item).parent().append('');
}
}
})
- if (!this.ks_speeches.length){
- if ($(ks_audio).find('audio').attr('src') && $(ks_audio).find('audio')[0].paused){
+ if (!this.ks_speeches.length) {
+ if ($(ks_audio).find('audio').attr('src') && $(ks_audio).find('audio')[0].paused) {
$(ks_audio).find('audio')[0].play();
$(ks_audio).find('.fa.fa-volume-up').removeClass('d-none');
$(ks_audio).find('.fa.fa-pause').remove();
- }else if ($(ks_audio).find('audio').attr('src') && !$(ks_audio).find('audio')[0].paused){
+ } else if ($(ks_audio).find('audio').attr('src') && !$(ks_audio).find('audio')[0].paused) {
$(ks_audio).find('audio')[0].pause();
$(ks_audio).find('.fa.fa-volume-up').addClass('d-none');
$(ks_audio).append('');
- }else{
+ } else {
$(ks_audio).find('span').addClass('d-none')
$(ks_audio).append('
')
- this.ks_speeches.push(this._rpc('web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_generatetext_to_speech',{
- model : "ks_dashboard_ninja.arti_int",
- method:"ks_generatetext_to_speech",
- args:[item.id],
- kwargs:{}
- }).then(function(result){
- if (result){
+ this.ks_speeches.push(this._rpc('web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_generatetext_to_speech', {
+ model: "ks_dashboard_ninja.arti_int",
+ method: "ks_generatetext_to_speech",
+ args: [item.id],
+ kwargs: {}
+ }).then(function (result) {
+ if (result) {
$(ks_audio).find('.spinner-grow').remove()
$(ks_audio).find('span').removeClass('d-none')
var audio = (JSON.parse(result)).snd;
- $(ks_audio).find('audio')[0].src="data:audio/wav;base64, "+audio;
+ $(ks_audio).find('audio')[0].src = "data:audio/wav;base64, " + audio;
$(ks_audio).find('audio')[0].play()
this.ks_speeches.pop()
}
@@ -1598,16 +1598,16 @@ export class KsDashboardNinja extends Component {
}
-KsDashboardNinja.components = { Ksdashboardtile, Ksdashboardlistview, Ksdashboardgraph, Ksdashboardkpiview, Ksdashboardtodo, DateTimePicker, DateTimeInput};
+KsDashboardNinja.components = { Ksdashboardtile, Ksdashboardlistview, Ksdashboardgraph, Ksdashboardkpiview, Ksdashboardtodo, DateTimePicker, DateTimeInput };
KsDashboardNinja.template = "ks_dashboard_ninja.KsDashboardNinjaHeader"
registry.category("actions").add("ks_dashboard_ninja", KsDashboardNinja);
-const ks_dn_webclient ={
+const ks_dn_webclient = {
async loadRouterState(...args) {
var self = this;
-// const sup = await this.super(...args);
+ // const sup = await this.super(...args);
const sup = await super.loadRouterState(...args);
- const ks_reload_menu = async (id) => {
+ const ks_reload_menu = async (id) => {
this.menuService.reload().then(() => {
self.menuService.selectMenu(id);
});
diff --git a/ks_dashboard_ninja/static/src/xml/ks_dashboard_ninja_templates.xml b/ks_dashboard_ninja/static/src/xml/ks_dashboard_ninja_templates.xml
index e6f5ad444..29397704b 100644
--- a/ks_dashboard_ninja/static/src/xml/ks_dashboard_ninja_templates.xml
+++ b/ks_dashboard_ninja/static/src/xml/ks_dashboard_ninja_templates.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/sh_backmate_theme_adv_enterprise/__manifest__.py b/sh_backmate_theme_adv_enterprise/__manifest__.py
index ad78304f5..fb8185edc 100644
--- a/sh_backmate_theme_adv_enterprise/__manifest__.py
+++ b/sh_backmate_theme_adv_enterprise/__manifest__.py
@@ -128,7 +128,7 @@
"sh_backmate_theme_adv_enterprise/static/src/js/navbar.js",
'sh_backmate_theme_adv_enterprise/static/src/js/dropdown.js',
"sh_backmate_theme_adv_enterprise/static/src/xml/menu.xml",
-
+ "sh_backmate_theme_adv_enterprise/static/src/scss/menu/fullscreen_toggle.scss",
#Theme Config
"sh_backmate_theme_adv_enterprise/static/src/js/theme_config_custom.js",
diff --git a/sh_backmate_theme_adv_enterprise/static/src/js/navbar.js b/sh_backmate_theme_adv_enterprise/static/src/js/navbar.js
index 71adbef96..9aedeee24 100644
--- a/sh_backmate_theme_adv_enterprise/static/src/js/navbar.js
+++ b/sh_backmate_theme_adv_enterprise/static/src/js/navbar.js
@@ -10,7 +10,7 @@ import { isMobileOS } from "@web/core/browser/feature_detection";
import { session } from "@web/session";
import { useService } from "@web/core/utils/hooks";
import { jsonrpc } from "@web/core/network/rpc_service";
-import { onMounted } from "@odoo/owl";
+import { onMounted, useState } from "@odoo/owl";
var icon_style = 'standard';
var sidebar_collapse_style = '';
@@ -29,21 +29,40 @@ patch(NavBar.prototype, {
this.getMenuBadgeData();
this.orm = useService("orm");
enable_multi_tab = session.sh_enable_multi_tab
+ // 定义状态
+ this.state = useState({
+ exFullscreen: false,
+ });
+ // 监听全屏状态变化(包括 ESC 退出)
+ document.addEventListener("fullscreenchange", () => {
+ this.state.exFullscreen = !!document.fullscreenElement;
+ });
+ document.addEventListener("webkitfullscreenchange", () => {
+ this.state.exFullscreen = !!document.webkitFullscreenElement;
+ });
+ document.addEventListener("mozfullscreenchange", () => {
+ this.state.exFullscreen = !!document.mozFullScreenElement;
+ });
+ document.addEventListener("MSFullscreenChange", () => {
+ this.state.exFullscreen = !!document.msFullscreenElement;
+ });
onMounted(() => {
- if (enable_multi_tab){
- this.addmultitabtags()
+ if (enable_multi_tab) {
+ this.addmultitabtags()
}
$('.direct_menu').on('click', function (ev) {
- $('.sh_dropdown_div').find('.active').removeClass('active');
- $('.dropdown-menu').find('.active').removeClass('active');
- $(ev.currentTarget).addClass('active')
+ $('.sh_dropdown_div').find('.active').removeClass('active');
+ $('.dropdown-menu').find('.active').removeClass('active');
+ $(ev.currentTarget).addClass('active')
});
+ //默认隐藏top bar
+ this._click_hide_top_bar();
});
const data = await this.orm.searchRead(
- "sh.back.theme.config.settings",
- [['id', '=', 1]],
- ['icon_style','sidebar_collapse_style','search_style']
- );
+ "sh.back.theme.config.settings",
+ [['id', '=', 1]],
+ ['icon_style', 'sidebar_collapse_style', 'search_style']
+ );
if (data) {
var i;
for (i = 0; i < data.length; i++) {
@@ -59,9 +78,35 @@ patch(NavBar.prototype, {
}
}
}
-
},
-
+ /**
+ * 切换全屏显示
+ **/
+ _click_fullscreen_toggle(ev) {
+ const elem = document.documentElement;
+ if (
+ document.fullscreenElement ||
+ document.webkitFullscreenElement ||
+ document.mozFullScreenElement ||
+ document.msFullscreenElement
+ ) {
+ if (document.exitFullscreen) {
+ document.exitFullscreen();
+ } else if (document.webkitExitFullscreen) {
+ document.webkitExitFullscreen(); // Safari
+ } else if (document.msExitFullscreen) {
+ document.msExitFullscreen(); // IE11
+ }
+ } else {
+ if (elem.requestFullscreen) {
+ elem.requestFullscreen();
+ } else if (elem.webkitRequestFullscreen) {
+ elem.webkitRequestFullscreen(); // Safari
+ } else if (elem.msRequestFullscreen) {
+ elem.msRequestFullscreen(); // IE11
+ }
+ }
+ },
/**
* 获取菜单角标
* */
@@ -77,12 +122,12 @@ patch(NavBar.prototype, {
method: "POST",
dataType: 'json',
async: false, // 设置为同步请求
- beforeSend: (xhr) => {xhr.setRequestHeader('Content-Type', 'application/json');},
- data : JSON.stringify(jsonData),
+ beforeSend: (xhr) => { xhr.setRequestHeader('Content-Type', 'application/json'); },
+ data: JSON.stringify(jsonData),
success: (result) => {
this.menuBadgeInfo = result.result;
},
- error: function(xhr, status, error) {
+ error: function (xhr, status, error) {
// 请求失败的处理逻辑
console.error("Error:", error);
}
@@ -118,123 +163,123 @@ patch(NavBar.prototype, {
return badgeCount;
},
- onMouseenter_o_app2(ev){
+ onMouseenter_o_app2(ev) {
$(ev.target.parentElement).find('ul.show_ul').css("transition", "all 0.6s ease 0s;");
$(ev.target.parentElement).find('ul.show_ul').slideDown("slow");
},
- onMouseenter_sh_backmate_theme_appmenu_div(ev){
+ onMouseenter_sh_backmate_theme_appmenu_div(ev) {
if ($('.o_web_client').hasClass('o_rtl')) {
- if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
- $('.o_action_manager').css("margin-right", '260px');
- $('.o_menu_systray').css("width", '260px');
- $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("right", "260px");
- $('.o_mail_systray_dropdown').css("right", "260px");
- $('.o_switch_company_menu .dropdown-menu').css("right", "260px");
- if (sidebar_collapse_style != 'expanded' && search_style != 'collapsed') {
- $('.sh_search_container').css("margin-right", '190px');
- $('#object1').css("padding-right", "0px");
- $('.multi_tab_section').css("margin-right", '260px');
- }
- }
- } else {
- if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
+ if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
+ $('.o_action_manager').css("margin-right", '260px');
+ $('.o_menu_systray').css("width", '260px');
+ $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("right", "260px");
+ $('.o_mail_systray_dropdown').css("right", "260px");
+ $('.o_switch_company_menu .dropdown-menu').css("right", "260px");
+ if (sidebar_collapse_style != 'expanded' && search_style != 'collapsed') {
+ $('.sh_search_container').css("margin-right", '190px');
+ $('#object1').css("padding-right", "0px");
+ $('.multi_tab_section').css("margin-right", '260px');
+ }
+ }
+ } else {
+ if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
- if (sidebar_collapse_style != 'expanded') {
- $('.multi_tab_section').css("margin-left", '260px');
- $('.o_action_manager').css("margin-left", '260px');
- }
- $('.o_menu_systray').css("width", '260px');
- $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("left", "260px");
- $('.o_mail_systray_dropdown').css("left", "260px");
- $('.o_switch_company_menu .dropdown-menu').css("left", "260px");
- if (sidebar_collapse_style != 'expanded' && search_style != 'collapsed') {
- $('.sh_search_container').css("margin-left", '190px');
- $('#object1').css("padding-left", "0px");
- }
- }
- }
+ if (sidebar_collapse_style != 'expanded') {
+ $('.multi_tab_section').css("margin-left", '260px');
+ $('.o_action_manager').css("margin-left", '260px');
+ }
+ $('.o_menu_systray').css("width", '260px');
+ $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("left", "260px");
+ $('.o_mail_systray_dropdown').css("left", "260px");
+ $('.o_switch_company_menu .dropdown-menu').css("left", "260px");
+ if (sidebar_collapse_style != 'expanded' && search_style != 'collapsed') {
+ $('.sh_search_container').css("margin-left", '190px');
+ $('#object1').css("padding-left", "0px");
+ }
+ }
+ }
},
- onMouseleave_sh_backmate_theme_appmenu_div(ev){
+ onMouseleave_sh_backmate_theme_appmenu_div(ev) {
if ($('.o_web_client').hasClass('o_rtl')) {
- if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
+ if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
- if (sidebar_collapse_style != 'expanded') {
- $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').slideUp("slow");
- $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("transition", "all 0.6s ease 0s;");
- $('#object1').css("padding-right", "0px");
- $('.multi_tab_section').css("margin-right", '80px');
- }
+ if (sidebar_collapse_style != 'expanded') {
+ $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').slideUp("slow");
+ $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("transition", "all 0.6s ease 0s;");
+ $('#object1').css("padding-right", "0px");
+ $('.multi_tab_section').css("margin-right", '80px');
+ }
- $('.o_action_manager').css("margin-right", '68px');
- $('.sh_search_container').css("margin-right", '0px');
- $('.o_menu_systray').css("width", '68px');
- if ($('ul.dropdown-menu.dropdown-menu-right').hasClass('show_ul')) {
- }
- $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("right", "68px");
- $('.o_mail_systray_dropdown').css("right", "68px");
- $('.o_switch_company_menu .dropdown-menu').css("right", "68px");
- $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("display", "none");
- }
- } else {
- if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
- if (sidebar_collapse_style != 'expanded') {
- $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').slideUp("slow");
- $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("transition", "all 0.6s ease 0s;");
- $('#object1').css("padding-left", "0px");
- $('.multi_tab_section').css("margin-left", '80px');
- $('.o_action_manager').css("margin-left", '68px');
- }
+ $('.o_action_manager').css("margin-right", '68px');
+ $('.sh_search_container').css("margin-right", '0px');
+ $('.o_menu_systray').css("width", '68px');
+ if ($('ul.dropdown-menu.dropdown-menu-right').hasClass('show_ul')) {
+ }
+ $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("right", "68px");
+ $('.o_mail_systray_dropdown').css("right", "68px");
+ $('.o_switch_company_menu .dropdown-menu').css("right", "68px");
+ $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("display", "none");
+ }
+ } else {
+ if ($('#js_bar_toggle_btn_mobile').css("top") == '0px') {
+ if (sidebar_collapse_style != 'expanded') {
+ $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').slideUp("slow");
+ $(ev.target).find('.o_app2.sh_dropdown.active').parents('.sh_dropdown_div').find('ul.show_ul').css("transition", "all 0.6s ease 0s;");
+ $('#object1').css("padding-left", "0px");
+ $('.multi_tab_section').css("margin-left", '80px');
+ $('.o_action_manager').css("margin-left", '68px');
+ }
- $('.sh_search_container').css("margin-left", '0px');
- $('.o_menu_systray').css("width", '68px');
- if ($('ul.dropdown-menu.dropdown-menu-right').hasClass('show_ul')) {
- }
- $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("left", "68px");
- $('.o_mail_systray_dropdown').css("left", "68px");
- $('.o_switch_company_menu .dropdown-menu').css("left", "68px");
+ $('.sh_search_container').css("margin-left", '0px');
+ $('.o_menu_systray').css("width", '68px');
+ if ($('ul.dropdown-menu.dropdown-menu-right').hasClass('show_ul')) {
+ }
+ $('.o_main_navbar ul.o_menu_systray .o_debug_manager .dropdown-menu.show').css("left", "68px");
+ $('.o_mail_systray_dropdown').css("left", "68px");
+ $('.o_switch_company_menu .dropdown-menu').css("left", "68px");
- }
+ }
- }
+ }
},
- _click_o_app(ev){
+ _click_o_app(ev) {
$(".sh_backmate_theme_appmenu_div").toggleClass("sidebar_toggle");
$(".blur_div").toggleClass("blur_toggle");
$('.o_menu_systray').css("opacity", '1');
/*todo later*/
/*$(this).parents('.sh_dropdown_div').find('.sh_dropdown').removeClass('sh_dropdown');
- $(this).parents('.sh_dropdown_div').find('.show_ul').css("display", "none");*/
+ $(this).parents('.sh_dropdown_div').find('.show_ul').css("display", "none");*/
},
- _click_toggle_bar(ev){
+ _click_toggle_bar(ev) {
if ($("#toggle_bar").hasClass("fa-bars")) {
- ev.target.classList.toggle('fa-times');
- $("#toggle_bar").removeClass('fa-bars');
- } else {
- ev.target.classList.toggle('fa-bars');
- $("#toggle_bar").removeClass('fa-times');
- }
+ ev.target.classList.toggle('fa-times');
+ $("#toggle_bar").removeClass('fa-bars');
+ } else {
+ ev.target.classList.toggle('fa-bars');
+ $("#toggle_bar").removeClass('fa-times');
+ }
},
- _click_js_bar_toggle_btn_mobile(ev){
+ _click_js_bar_toggle_btn_mobile(ev) {
$(".sh_backmate_theme_appmenu_div").toggleClass("sidebar_toggle");
$(".blur_div").toggleClass("blur_toggle");
$('.o_menu_systray').css("opacity", '1');
if ($('.sidebar_toggle').css("max-width") != '100%') {
- $('.o_action_manager').css("margin-left" , '0px');
- $('.o_menu_systray').css("width", '0px');
- $('.o_menu_systray').css("opacity", '0');
- $('ul.dropdown-menu.dropdown-menu-right').css("display", 'none');
- $('ul.dropdown-menu.dropdown-menu-right').removeClass('show_ul');
- $('span.sh_dropdown').removeClass('sh_dropdown');
- $("#toggle_bar").addClass('fa-bars');
- $("#toggle_bar").removeClass('fa-times');
- $("#js_bar_toggle_btn_mobile").css("display","none");
+ $('.o_action_manager').css("margin-left", '0px');
+ $('.o_menu_systray').css("width", '0px');
+ $('.o_menu_systray').css("opacity", '0');
+ $('ul.dropdown-menu.dropdown-menu-right').css("display", 'none');
+ $('ul.dropdown-menu.dropdown-menu-right').removeClass('show_ul');
+ $('span.sh_dropdown').removeClass('sh_dropdown');
+ $("#toggle_bar").addClass('fa-bars');
+ $("#toggle_bar").removeClass('fa-times');
+ $("#js_bar_toggle_btn_mobile").css("display", "none");
} else {
- $('.o_action_manager').css("margin-left" , '310px');
+ $('.o_action_manager').css("margin-left", '310px');
$('.o_menu_systray').css("width", '100%');
$('.o_menu_systray').css("opacity", '1');
$("#toggle_bar").removeClass('fa-bars');
@@ -242,16 +287,16 @@ patch(NavBar.prototype, {
}
},
- _click_blur_div(ev){
+ _click_blur_div(ev) {
if ($('#js_bar_toggle_btn_mobile').css("top") != '0px') {
- if (!$('.blur_div').hasClass('blur_toggle')) {
- $(".sh_backmate_theme_appmenu_div").toggleClass("sidebar_toggle");
- $(".blur_div").toggleClass("blur_toggle");
- $('.o_menu_systray').css("opacity", '1');
- }
- }
+ if (!$('.blur_div').hasClass('blur_toggle')) {
+ $(".sh_backmate_theme_appmenu_div").toggleClass("sidebar_toggle");
+ $(".blur_div").toggleClass("blur_toggle");
+ $('.o_menu_systray').css("opacity", '1');
+ }
+ }
},
- _click_hide_top_bar(ev){
+ _click_hide_top_bar(ev) {
$('.o_main_navbar').css("width", "0px");
$('.o_main_navbar').css("height", "0px");
$('.o_main_navbar').css("min-height", "0px");
@@ -266,7 +311,7 @@ patch(NavBar.prototype, {
$("#hide_top_bar").css("display", "none");
},
- _click_show_top_bar(ev){
+ _click_show_top_bar(ev) {
$('.o_main_navbar').css("width", "100%");
$('.o_main_navbar').css("height", "4rem");
$('.o_main_navbar').css("min-height", "4rem");
@@ -278,7 +323,7 @@ patch(NavBar.prototype, {
$("#show_top_bar").css("display", "none");
},
- get_current_company(){
+ get_current_company() {
let current_company_id;
if (session.user_context.allowed_company_ids) {
current_company_id = session.user_context.allowed_company_ids[0];
@@ -298,14 +343,14 @@ patch(NavBar.prototype, {
$(".sh_backmate_theme_appmenu_div").toggleClass("sidebar_toggle");
$(".blur_div").toggleClass("blur_toggle");
$('.o_menu_systray').css("opacity", '1');
- if (enable_multi_tab){
- if(window.event.shiftKey){
+ if (enable_multi_tab) {
+ if (window.event.shiftKey) {
this._createMultiTab(menu)
- }else{
+ } else {
}
}
- if(this.websiteCustomMenus){
+ if (this.websiteCustomMenus) {
const websiteMenu = this.websiteCustomMenus.get(menu.xmlid);
if (websiteMenu) {
return this.websiteCustomMenus.open(menu);
@@ -318,114 +363,114 @@ patch(NavBar.prototype, {
},
_createMultiTab: function (ev) {
- var tab_name = ev.name
- var url = '#menu_id='+ev.id + '&action='+ ev.actionID
- var actionId = ev.actionID
- var menuId = ev.id
- var menu_xmlid = ev.xmlid
- var self = this
- localStorage.setItem('LastCreatedTab',actionId)
+ var tab_name = ev.name
+ var url = '#menu_id=' + ev.id + '&action=' + ev.actionID
+ var actionId = ev.actionID
+ var menuId = ev.id
+ var menu_xmlid = ev.xmlid
+ var self = this
+ localStorage.setItem('LastCreatedTab', actionId)
- jsonrpc('/add/mutli/tab', {
- 'name':tab_name,
- 'url':url,
- 'actionId':actionId,
- 'menuId':menuId,
- 'menu_xmlid':menu_xmlid,
- }).then((rec) => {
- self.addmultitabtags(ev)
- });
- },
+ jsonrpc('/add/mutli/tab', {
+ 'name': tab_name,
+ 'url': url,
+ 'actionId': actionId,
+ 'menuId': menuId,
+ 'menu_xmlid': menu_xmlid,
+ }).then((rec) => {
+ self.addmultitabtags(ev)
+ });
+ },
addmultitabtags: async function (ev) {
- var self = this
- var rec = await jsonrpc('/get/mutli/tab', {});
- if (rec){
- if (theme_style == 'theme_style'){ $('body > header').css("height", "48px"); }
- $('.multi_tab_section').empty()
- $.each(rec, function( key, value ) {
- var tab_tag = ''
- $('.multi_tab_section').append(tab_tag)
- })
- var ShstoredActionId = sessionStorage.getItem("sh_current_action_id");
- var ShstoredAction = sessionStorage.getItem("sh_current_action");
- if (ShstoredActionId){
- var TabDiv = $('.multi_tab_section .multi_tab_div');
- var ActiveMenu = TabDiv.find('a[data-action-id="'+ ShstoredActionId +'"]');
- ActiveMenu.parent().addClass('tab_active')
- }
+ var self = this
+ var rec = await jsonrpc('/get/mutli/tab', {});
+ if (rec) {
+ if (theme_style == 'theme_style') { $('body > header').css("height", "48px"); }
+ $('.multi_tab_section').empty()
+ $.each(rec, function (key, value) {
+ var tab_tag = ''
+ $('.multi_tab_section').append(tab_tag)
+ })
+ var ShstoredActionId = sessionStorage.getItem("sh_current_action_id");
+ var ShstoredAction = sessionStorage.getItem("sh_current_action");
+ if (ShstoredActionId) {
+ var TabDiv = $('.multi_tab_section .multi_tab_div');
+ var ActiveMenu = TabDiv.find('a[data-action-id="' + ShstoredActionId + '"]');
+ ActiveMenu.parent().addClass('tab_active')
+ }
- if (ev) {
- var actionId = ev.actionID
- var menu_xmlid = ev.xmlid
- if(localStorage.getItem('LastCreatedTab')){
- var target = '.multi_tab_section .multi_tab_div a[data-action-id="'+ localStorage.getItem('LastCreatedTab') +'"]'
- $(target).parent().addClass('tab_active')
- localStorage.removeItem('LastCreatedTab')
- } else {
- var target = '.multi_tab_section .multi_tab_div a[data-xml-id="'+ menu_xmlid +'"]'
- $(target).parent().addClass('tab_active')
- }
- }
- $('body').addClass("multi_tab_enabled");
+ if (ev) {
+ var actionId = ev.actionID
+ var menu_xmlid = ev.xmlid
+ if (localStorage.getItem('LastCreatedTab')) {
+ var target = '.multi_tab_section .multi_tab_div a[data-action-id="' + localStorage.getItem('LastCreatedTab') + '"]'
+ $(target).parent().addClass('tab_active')
+ localStorage.removeItem('LastCreatedTab')
} else {
- $('body').removeClass("multi_tab_enabled");
+ var target = '.multi_tab_section .multi_tab_div a[data-xml-id="' + menu_xmlid + '"]'
+ $(target).parent().addClass('tab_active')
}
- $('.multi_tab_section .remove_tab').on('click', function (ev) {
- self._RemoveTab(ev)
- });
- $('.multi_tab_section .multi_tab_div a').on('click', function (ev) {
- self._TabClicked(ev)
- });
- },
+ }
+ $('body').addClass("multi_tab_enabled");
+ } else {
+ $('body').removeClass("multi_tab_enabled");
+ }
+ $('.multi_tab_section .remove_tab').on('click', function (ev) {
+ self._RemoveTab(ev)
+ });
+ $('.multi_tab_section .multi_tab_div a').on('click', function (ev) {
+ self._TabClicked(ev)
+ });
+ },
_RemoveTab: function (ev) {
- var self = this
- var multi_tab_id = $(ev.target).parent().find('a').attr('multi_tab_id')
- jsonrpc('/remove/multi/tab', {
- 'multi_tab_id':multi_tab_id,
- }).then(function(rec) {
- if (rec){
- if(rec['removeTab']){
- $(ev.target).parent().remove()
- var FirstTab = $('.multi_tab_section').find('.multi_tab_div:first-child')
- if(FirstTab.length){
- $(FirstTab).find('a')[0].click()
- $(FirstTab).addClass('tab_active')
- }
- }
- if(rec['multi_tab_count'] == 0){
- $('body').removeClass("multi_tab_enabled");
+ var self = this
+ var multi_tab_id = $(ev.target).parent().find('a').attr('multi_tab_id')
+ jsonrpc('/remove/multi/tab', {
+ 'multi_tab_id': multi_tab_id,
+ }).then(function (rec) {
+ if (rec) {
+ if (rec['removeTab']) {
+ $(ev.target).parent().remove()
+ var FirstTab = $('.multi_tab_section').find('.multi_tab_div:first-child')
+ if (FirstTab.length) {
+ $(FirstTab).find('a')[0].click()
+ $(FirstTab).addClass('tab_active')
}
}
- });
- },
+ if (rec['multi_tab_count'] == 0) {
+ $('body').removeClass("multi_tab_enabled");
+ }
+ }
+ });
+ },
- _TabClicked: function (ev){
- localStorage.setItem("TabClick", true);
- localStorage.setItem("TabClickTilteUpdate", true);
- if($(ev.target).data('action-id')){
- $('.multi_tab_section').find('.tab_active').removeClass('tab_active');
- $(ev.target).parent().addClass('tab_active')
- console.log('$(ev.target).parent()',$(ev.target).parent())
- }
- else{
- if($(ev.currentTarget).data('action-id')){
+ _TabClicked: function (ev) {
+ localStorage.setItem("TabClick", true);
+ localStorage.setItem("TabClickTilteUpdate", true);
+ if ($(ev.target).data('action-id')) {
$('.multi_tab_section').find('.tab_active').removeClass('tab_active');
- $(ev.currentTarget).parent().addClass('tab_active')
- console.log('$(ev.target).parent()',$(ev.target).parent())
+ $(ev.target).parent().addClass('tab_active')
+ console.log('$(ev.target).parent()', $(ev.target).parent())
+ }
+ else {
+ if ($(ev.currentTarget).data('action-id')) {
+ $('.multi_tab_section').find('.tab_active').removeClass('tab_active');
+ $(ev.currentTarget).parent().addClass('tab_active')
+ console.log('$(ev.target).parent()', $(ev.target).parent())
+ }
}
- }
},
onNavBarDropdownItemClick(ev) {
- if(ev.shiftKey){
- localStorage.setItem("sh_add_tab",1)
- }else{
- localStorage.setItem("sh_add_tab",0)
+ if (ev.shiftKey) {
+ localStorage.setItem("sh_add_tab", 1)
+ } else {
+ localStorage.setItem("sh_add_tab", 0)
}
},
- getAppClassName(app){
+ getAppClassName(app) {
var app_name = app.xmlid
return app_name.replaceAll('.', '_')
},
@@ -504,7 +549,7 @@ patch(NavBar.prototype, {
menuList.forEach(menu => {
// 为当前菜单添加 level 属性
menu.level = level;
- // 如果有子菜单,递归给子菜单添加等级
+ // 如果有子菜单,递归给子菜单添加等级
if (menu.childrenTree && menu.childrenTree.length > 0) {
this.addLevelToMenu(menu.childrenTree, level + 1); // 递归调用,增加等级
}
@@ -514,7 +559,7 @@ patch(NavBar.prototype, {
// 获取一级菜单的子菜单
currentMenuAppSections(app_id) {
const childrenMenu = (this.menuService.getMenuAsTree(app_id).childrenTree) || [];
- // 给每个子菜单及其子菜单递归添加等级
+ // 给每个子菜单及其子菜单递归添加等级
this.addLevelToMenu(childrenMenu);
return childrenMenu;
},
diff --git a/sh_backmate_theme_adv_enterprise/static/src/scss/menu/fullscreen_toggle.scss b/sh_backmate_theme_adv_enterprise/static/src/scss/menu/fullscreen_toggle.scss
new file mode 100644
index 000000000..c6d83e3d7
--- /dev/null
+++ b/sh_backmate_theme_adv_enterprise/static/src/scss/menu/fullscreen_toggle.scss
@@ -0,0 +1,37 @@
+#fullscreen_toggle {
+ /* 浅灰背景 */
+ background-color: #f5f5f5;
+ /* 黑色图标 */
+ color: #000;
+ /* 圆形 */
+ border-radius: 50%;
+ /* 固定宽度 */
+ width: 30px;
+ /* 固定高度 */
+ height: 30px;
+ display: flex;
+ /* 居中对齐 */
+ align-items: center;
+ justify-content: center;
+ /* 图标大小 */
+ font-size: 18px;
+ cursor: pointer;
+ /* 动画 */
+ transition: all 0.3s ease;
+ /* 去掉边框 */
+ border: none;
+}
+
+#fullscreen_toggle:hover {
+ /* 悬停时更深一点 */
+ background-color: #e0e0e0;
+ /* 微微放大 */
+ transform: scale(1.05);
+}
+
+#fullscreen_toggle:active {
+ /* 点击时更深 */
+ background-color: #d6d6d6;
+ /* 点击时缩小一点 */
+ transform: scale(0.95);
+}
diff --git a/sh_backmate_theme_adv_enterprise/static/src/xml/menu.xml b/sh_backmate_theme_adv_enterprise/static/src/xml/menu.xml
index 7d0c74c19..27c591a4f 100644
--- a/sh_backmate_theme_adv_enterprise/static/src/xml/menu.xml
+++ b/sh_backmate_theme_adv_enterprise/static/src/xml/menu.xml
@@ -1,13 +1,12 @@
-
-
-
+
+
@@ -41,12 +40,11 @@
-
-
+
@@ -73,7 +71,6 @@
-
@@ -139,6 +135,14 @@
![]()
+
+
+
+
@@ -176,27 +180,25 @@
-
+
-
-
+
-
+
-
-
+
+
@@ -269,5 +268,4 @@
-
-
+
\ No newline at end of file