diff --git a/jikimo_frontend/views/bye_odoo.xml b/jikimo_frontend/views/bye_odoo.xml index 75136cc1..14fd211b 100644 --- a/jikimo_frontend/views/bye_odoo.xml +++ b/jikimo_frontend/views/bye_odoo.xml @@ -16,7 +16,7 @@ - + diff --git a/jikimo_sale_order_message_notify/__init__.py b/jikimo_sale_order_message_notify/__init__.py deleted file mode 100644 index 9a7e03ed..00000000 --- a/jikimo_sale_order_message_notify/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import models \ No newline at end of file diff --git a/jikimo_sale_order_message_notify/__manifest__.py b/jikimo_sale_order_message_notify/__manifest__.py deleted file mode 100644 index 45570c08..00000000 --- a/jikimo_sale_order_message_notify/__manifest__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -{ - 'name': '机企猫智能工厂 消息提醒', - 'version': '1.0', - 'summary': '智能工厂消息提醒模块', - 'sequence': 1, - 'description': """ - - """, - 'category': 'sf', - 'website': 'https://www.sf.jikimo.com', - 'depends': ['jikimo_message_notify'], - 'data': [ - 'security/ir.model.access.csv', - 'data/bussiness_node.xml', - # 'views/sf_message_template_view.xml', - ], - 'test': [ - ], - 'license': 'LGPL-3', - 'installable': True, - 'auto_install': False, - 'application': False, -} diff --git a/jikimo_sale_order_message_notify/data/bussiness_node.xml b/jikimo_sale_order_message_notify/data/bussiness_node.xml deleted file mode 100644 index e6800a48..00000000 --- a/jikimo_sale_order_message_notify/data/bussiness_node.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - 订单确认 - sale.order - - - \ No newline at end of file diff --git a/jikimo_sale_order_message_notify/models/__init__.py b/jikimo_sale_order_message_notify/models/__init__.py deleted file mode 100644 index c0462bbd..00000000 --- a/jikimo_sale_order_message_notify/models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from . import jikimo_message_template -from . import sale_order diff --git a/jikimo_sale_order_message_notify/models/jikimo_message_template.py b/jikimo_sale_order_message_notify/models/jikimo_message_template.py deleted file mode 100644 index 4c2530f5..00000000 --- a/jikimo_sale_order_message_notify/models/jikimo_message_template.py +++ /dev/null @@ -1,10 +0,0 @@ -from odoo import models, fields, api - -class JikimoMessageTemplate(models.Model): - _inherit = "jikimo.message.template" - - def _get_message_model(self): - res = super(JikimoMessageTemplate, self)._get_message_model() - res.append("sale.order") - return res - diff --git a/jikimo_sale_order_message_notify/models/sale_order.py b/jikimo_sale_order_message_notify/models/sale_order.py deleted file mode 100644 index 4883fedd..00000000 --- a/jikimo_sale_order_message_notify/models/sale_order.py +++ /dev/null @@ -1,12 +0,0 @@ -from odoo import models, fields, api - - -class SaleOrder(models.Model): - _name = "sale.order" - _description = "销售订单" - _inherit = ["sale.order", "jikimo.message.dispatch"] - - def create(self, vals_list): - res = super(SaleOrder, self).create(vals_list) - res.add_queue('订单确认') - return res diff --git a/jikimo_sale_order_message_notify/security/group_security.xml b/jikimo_sale_order_message_notify/security/group_security.xml deleted file mode 100644 index fdbc3ae5..00000000 --- a/jikimo_sale_order_message_notify/security/group_security.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/jikimo_sale_order_message_notify/security/ir.model.access.csv b/jikimo_sale_order_message_notify/security/ir.model.access.csv deleted file mode 100644 index 0b7f9c7b..00000000 --- a/jikimo_sale_order_message_notify/security/ir.model.access.csv +++ /dev/null @@ -1,6 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink - - - - - diff --git a/jikimo_sale_order_message_notify/views/sf_message_template_view.xml b/jikimo_sale_order_message_notify/views/sf_message_template_view.xml deleted file mode 100644 index 21920b64..00000000 --- a/jikimo_sale_order_message_notify/views/sf_message_template_view.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - sf.message.template.view.form - message.template - - - - - - - - - - - - - - - - - - - - - - - - - sf.message.template.view.tree - message.template - - - - - - - - - - - - - - - sf.message.template.search.view - message.template - - - - - - - - - - - - 消息模板 - message.template - tree,form - - - - - - - \ No newline at end of file diff --git a/sf_base/static/src/scss/test.scss b/sf_base/static/src/scss/test.scss index c91a8a77..565e7956 100644 --- a/sf_base/static/src/scss/test.scss +++ b/sf_base/static/src/scss/test.scss @@ -159,9 +159,6 @@ td.o_required_modifier { display:inline; } .diameter{ - display: flex !important; - justify-content: flex-start !important; - align-items: center !important; } .o_address_format { display: flex !important; diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index 8b429f89..6b97f0ec 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -578,7 +578,7 @@ - + sf.tool.inventory.search sf.tool.inventory diff --git a/sf_hr/__manifest__.py b/sf_hr/__manifest__.py index c0bd63ef..b3e21ab3 100644 --- a/sf_hr/__manifest__.py +++ b/sf_hr/__manifest__.py @@ -7,10 +7,11 @@ 'sequence': 1, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['hr'], + 'depends': ['base', 'hr'], 'data': [ 'views/hr_employee.xml', 'views/res_config_settings_views.xml', + 'views/res_users_view.xml', 'data/cron_data.xml', ], 'demo': [ diff --git a/sf_hr/models/__init__.py b/sf_hr/models/__init__.py index ffe76391..9744f0cc 100644 --- a/sf_hr/models/__init__.py +++ b/sf_hr/models/__init__.py @@ -2,3 +2,4 @@ from . import hr_employee from . import res_config_setting +from . import res_users diff --git a/sf_hr/models/hr_employee.py b/sf_hr/models/hr_employee.py index 8cf5595d..e9826f29 100644 --- a/sf_hr/models/hr_employee.py +++ b/sf_hr/models/hr_employee.py @@ -20,7 +20,9 @@ class JkmPracticeEmployee(models.Model): if result['employee_list']: for employee_info in result['employee_list']: if employee_info['work_email']: - self.sudo().search([('work_email', '=', employee_info['work_email'])]).write( - {'we_id': employee_info['we_id']}) + hr_employee = self.sudo().search([('work_email', '=', employee_info['work_email'])]) + hr_employee.write({'we_id': employee_info['we_id']}) + if hr_employee.user_id: + hr_employee.user_id.write({'we_employee_id': employee_info['we_id']}) else: logging.info('_employee_info_sync error:%s' % result['message']) diff --git a/sf_hr/models/res_users.py b/sf_hr/models/res_users.py new file mode 100644 index 00000000..392c297a --- /dev/null +++ b/sf_hr/models/res_users.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api + +import logging + +_logger = logging.getLogger(__name__) + + +class ResUsers(models.Model): + _inherit = 'res.users' + + we_employee_id = fields.Char(string=u'企业微信账号', default="") diff --git a/sf_hr/views/res_users_view.xml b/sf_hr/views/res_users_view.xml new file mode 100644 index 00000000..c65d8e46 --- /dev/null +++ b/sf_hr/views/res_users_view.xml @@ -0,0 +1,20 @@ + + + + + res.users.account.form + res.users + + + + + + + + + + + + + + diff --git a/sf_machine_connect/controllers/controllers.py b/sf_machine_connect/controllers/controllers.py index 23452b43..1f65c884 100644 --- a/sf_machine_connect/controllers/controllers.py +++ b/sf_machine_connect/controllers/controllers.py @@ -231,6 +231,95 @@ class Sf_Dashboard_Connect(http.Controller): res['message'] = '前端请求日志数据失败,原因:%s' % e return json.dumps(res) + @http.route('/api/logs/page_data', type='http', auth='public', methods=['GET', 'POST'], + csrf=False, cors="*") + def logs_page_data(self, **kw): + """ + 拿到日志数据返回给大屏展示(支持时间戳分页) + :param kw: + :return: + """ + res = {'status': 1, 'message': '成功', 'data': {}} + logging.info('前端请求日志数据的参数为:%s' % kw) + + try: + # 连接数据库 + conn = psycopg2.connect(**db_config) + cur = conn.cursor() + + # 获取并解析传递的参数 + machine_list = ast.literal_eval(kw.get('machine_list', '[]')) + begin_time_str = kw.get('begin_time', '').strip('"') + end_time_str = kw.get('end_time', '').strip('"') + page = int(kw.get('page', 1)) # 默认页码为1 + page_size = int(kw.get('page_size', 80)) # 默认每页条数为10 + + begin_time = datetime.strptime(begin_time_str, '%Y-%m-%d %H:%M:%S') + end_time = datetime.strptime(end_time_str, '%Y-%m-%d %H:%M:%S') + + # 计算分页的 offset + offset = (page - 1) * page_size + + # 先查询符合条件的总记录数 + total_records = 0 + for item in machine_list: + count_sql = ''' + SELECT COUNT(*) + FROM device_data + WHERE device_name = %s AND time >= %s AND time <= %s; + ''' + # 执行总记录数查询 + cur.execute(count_sql, (item, begin_time, end_time)) + record_count = cur.fetchone()[0] # 获取总记录数 + total_records += record_count + + # 计算总页数 + if total_records > 0: + total_pages = (total_records + page_size - 1) // page_size # 向上取整 + else: + total_pages = 0 + + # 将总页数和总记录数返回到响应中 + res['total_records'] = total_records + res['total_pages'] = total_pages + + for item in machine_list: + sql = ''' + SELECT time, device_state, program_name + FROM device_data + WHERE device_name = %s AND time >= %s AND time <= %s + ORDER BY time DESC + LIMIT %s OFFSET %s; + ''' + # 执行SQL命令,使用参数绑定 + cur.execute(sql, (item, begin_time, end_time, page_size, offset)) + results = cur.fetchall() + + # 将数据按照 equipment_code 进行分组 + if item not in res['data']: + res['data'][item] = [] + + for result in results: + res['data'][item].append({ + 'time': result[0].strftime('%Y-%m-%d %H:%M:%S'), + 'state': result[1], + 'production_name': result[2], + }) + + return json.dumps(res) # 返回分页数据 + + except Exception as e: + logging.info('前端请求日志数据失败,原因:%s' % e) + res['status'] = -1 + res['message'] = '前端请求日志数据失败,原因:%s' % e + return json.dumps(res) + + finally: + if cur: + cur.close() + if conn: + conn.close() + # 返回CNC机床列表 @http.route('/api/CNCList', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*") @@ -378,7 +467,8 @@ class Sf_Dashboard_Connect(http.Controller): pass_rate = 1 if pass_nums: pass_rate = round( - (len(pass_nums) / detection_data if len(plan_data_finish_orders) > 0 else 0), 3) + # (len(pass_nums) / detection_data if len(plan_data_finish_orders) > 0 else 0), 3) + (len(pass_nums) / len(plan_data_finish_orders) if len(plan_data_finish_orders) > 0 else 0), 3) # 返工率 rework_rate = round( @@ -418,8 +508,9 @@ class Sf_Dashboard_Connect(http.Controller): 'plan_data_progress_deviation': plan_data_progress_deviation, 'plan_data_rework_counts': plan_data_rework_counts, 'on_time_rate': on_time_rate, - 'detection_data': detection_data, - 'pass_rate': pass_rate + # 'detection_data': detection_data, + 'detection_data': plan_data_finish_counts, + 'pass_rate': (plan_data_finish_counts - plan_data_fault_counts) / plan_data_finish_counts } res['data'][line] = data @@ -489,11 +580,14 @@ class Sf_Dashboard_Connect(http.Controller): for time_interval in time_intervals: start_time, end_time = time_interval - # print(start_time, end_time) - orders = plan_obj.search([('production_line_id.name', '=', line), ('state', 'in', ['finished']), - (date_field_name, '>=', start_time.strftime('%Y-%m-%d 00:00:00')), - (date_field_name, '<', end_time.strftime('%Y-%m-%d 00:00:00')) - ]) + + orders = plan_obj.search([ + ('production_line_id.name', '=', line), + ('state', 'in', ['finished']), + (date_field_name, '>=', start_time.strftime('%Y-%m-%d %H:%M:%S')), + (date_field_name, '<=', end_time.strftime('%Y-%m-%d %H:%M:%S')) # 包括结束时间 + ]) + # 使用小时和分钟作为键,确保每个小时的数据有独立的键 key = start_time.strftime('%H:%M:%S') # 只取小时:分钟:秒作为键 time_count_dict[key] = len(orders) @@ -715,7 +809,8 @@ class Sf_Dashboard_Connect(http.Controller): 'material': material, 'dimensions': dimensions, 'order_qty': finish_order.product_qty, - 'finish_time': finish_order.actual_end_time.strftime('%Y-%m-%d %H:%M:%S') if finish_order.actual_end_time else ' ' + 'finish_time': finish_order.actual_end_time.strftime( + '%Y-%m-%d %H:%M:%S') if finish_order.actual_end_time else ' ' } done_data.append(line_dict) @@ -799,54 +894,27 @@ class Sf_Dashboard_Connect(http.Controller): """ 查询设备的异常情况 """ - res = {'status': 1, 'message': '成功', 'data': {}} + res = {'status': 1, 'message': '成功', 'data': []} logging.info('前端请求机床数据的参数为:%s' % kw) - # 连接数据库 - conn = psycopg2.connect(**db_config) - cur = conn.cursor() try: - # 获取请求的机床数据 + maintenance_logs_obj = request.env['sf.maintenance.logs'].sudo() + # # 获取请求的机床数据 # machine_list = ast.literal_eval(kw['machine_list']) - # idle_times = [] - # idle_dict = {} - # for item in machine_list: - sql = ''' - SELECT DISTINCT ON (alarm_time) alarm_time, alarm_message, system_date, system_time, alarm_repair_time - FROM device_data - WHERE alarm_time IS NOT NULL - ORDER BY alarm_time, time; + # machine_data = equipment_obj.search([('code', '=', item)]) + for log in maintenance_logs_obj.search([]): + res['data'].append({ + 'name': log.name, + 'alarm_time': log.alarm_time.strftime('%Y-%m-%d %H:%M:%S'), + 'fault_alarm_info': log.fault_alarm_info if log.fault_alarm_info else ' ', + 'fault_process': log.fault_process if log.fault_process else ' ', + }) - ''' - # 执行SQL命令 - cur.execute(sql) - result = cur.fetchall() - # print('result', result) - - # 将查询结果转换为字典列表 - data = [] - for row in result: - record = { - 'alarm_time': row[0], - 'alarm_message': row[1], - 'system_date': row[2], - 'system_time': row[3], - 'alarm_repair_time': row[4] - } - data.append(record) - - # 将数据填充到返回结果中 - res['data'] = data - - # 返回统计结果 - return json.dumps(res, ensure_ascii=False) except Exception as e: - print(f"An error occurred: {e}") - return json.dumps(res) - finally: - cur.close() - conn.close() + logging.error(f"An error occurred: {e}") + + return json.dumps(res) # 设备oee @http.route('/api/OEE', type='http', auth='public', methods=['GET', 'POST'], csrf=False, cors="*") @@ -1163,6 +1231,7 @@ class Sf_Dashboard_Connect(http.Controller): conn = psycopg2.connect(**db_config) # 获取请求的机床数据 machine_list = ast.literal_eval(kw['machine_list']) + time_threshold = datetime.now() - timedelta(days=1) def fetch_result_as_dict(cursor): """辅助函数:将查询结果转为字典""" @@ -1172,18 +1241,29 @@ class Sf_Dashboard_Connect(http.Controller): for item in machine_list: with conn.cursor() as cur: cur.execute(""" - SELECT * FROM device_data - WHERE device_name = %s - AND device_state != '离线' - ORDER BY time DESC - LIMIT 1; - """, (item,)) + SELECT * FROM device_data + WHERE device_name = %s + AND device_state != '离线' + ORDER BY time DESC + LIMIT 1; + """, (item,)) last_all_time = fetch_result_as_dict(cur) + with conn.cursor() as cur: + cur.execute(""" + SELECT * FROM device_data + WHERE device_name = %s + AND device_state != '离线' AND time >= %s + ORDER BY time ASC + LIMIT 1; + """, (item, time_threshold)) + last_24_time = fetch_result_as_dict(cur) # 返回数据 res['data'][item] = { 'wait_time': last_all_time['run_time'] if last_all_time['run_time'] is not None else 0, 'cut_time': last_all_time['process_time'] if last_all_time['process_time'] is not None else 0, - 'power_on_time': last_all_time['power_on_time'] if last_all_time['power_on_time'] is not None else 0 + 'cut_24_time': last_24_time['process_time'] if last_24_time['process_time'] is not None else 0, + 'power_on_time': last_all_time['power_on_time'] if last_all_time['power_on_time'] is not None else 0, + 'power_on_24_time': last_24_time['power_on_time'] if last_24_time['power_on_time'] is not None else 0 } conn.close() diff --git a/sf_maintenance/models/sf_maintenance_logs.py b/sf_maintenance/models/sf_maintenance_logs.py index 7f80e163..c1a82a1b 100644 --- a/sf_maintenance/models/sf_maintenance_logs.py +++ b/sf_maintenance/models/sf_maintenance_logs.py @@ -1,13 +1,14 @@ # -*-coding:utf-8-*- -from odoo import fields, models +from odoo import fields, models, api class SfMaintenanceLogs(models.Model): _name = 'sf.maintenance.logs' _description = '设备故障日志' + _order = 'alarm_time desc' - code = fields.Char(string='编码') - name = fields.Char(string='名称') + code = fields.Char(string='编码', readonly=True) + name = fields.Char(string='名称', compute='_compute_name') type = fields.Selection([('type1', '类型1'), ('type2', '类型2')], string='类型') brand = fields.Many2one('sf.machine.brand', related='maintenance_equipment_id.brand_id', string='品牌') maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='机台号') @@ -28,3 +29,13 @@ class SfMaintenanceLogs(models.Model): fault_duration = fields.Float(string='故障时长') note = fields.Text(string='备注') active = fields.Boolean('Active', default=True) + + @api.depends('code') + def _compute_name(self): + for record in self: + if record.code: + record.name = self.env['maintenance.equipment'].sudo().search([('code', '=', record.code), ('active', '=', True)]).name + record.maintenance_equipment_id = self.env['maintenance.equipment'].sudo().search([('code', '=', record.code), ('active', '=', True)]).id + else: + record.name = '' + diff --git a/sf_maintenance/models/sf_maintenance_oee.py b/sf_maintenance/models/sf_maintenance_oee.py index 1a2e4f10..ee2c209c 100644 --- a/sf_maintenance/models/sf_maintenance_oee.py +++ b/sf_maintenance/models/sf_maintenance_oee.py @@ -66,11 +66,14 @@ class SfMaintenanceEquipmentOEE(models.Model): if result['status'] == 1: logs_list = result['data'][self.equipment_code] logs_detail = '' + log_state = '' for log in logs_list: - print('loooooooooooooooooooogs', log) - production_name = log['production_name'] if log['production_name'] else ' ' - logs_detail += '' + log['time'] + '' + log[ - 'state'] + '' + production_name + '' + if log['state'] != log_state: + print('loooooooooooooooooooogs', log) + production_name = log['production_name'] if log['production_name'] else ' ' + logs_detail += '' + log['time'] + '' + log[ + 'state'] + '' + production_name + '' + log_state = log['state'] # self.day_logs_detail = '时间事件/状态加工工单' + logs_detail + '' self.day_logs_detail = ''' @@ -119,10 +122,13 @@ class SfMaintenanceEquipmentOEE(models.Model): if result['status'] == 1: logs_list = result['data'][self.equipment_code] logs_detail = '' + log_state = '' for log in logs_list: - production_name = log['production_name'] if log['production_name'] else ' ' - logs_detail += '' + log['time'] + '' + log[ - 'state'] + '' + production_name + '' + if log['state'] != log_state: + production_name = log['production_name'] if log['production_name'] else ' ' + logs_detail += '' + log['time'] + '' + log[ + 'state'] + '' + production_name + '' + log_state = log['state'] # self.day_logs_detail = '时间事件/状态加工工单' + logs_detail + '' self.history_logs_detail = ''' diff --git a/sf_maintenance/views/maintenance_equipment_oee_views.xml b/sf_maintenance/views/maintenance_equipment_oee_views.xml index 33749809..b798b0ab 100644 --- a/sf_maintenance/views/maintenance_equipment_oee_views.xml +++ b/sf_maintenance/views/maintenance_equipment_oee_views.xml @@ -55,7 +55,31 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sf_maintenance/views/maintenance_logs_views.xml b/sf_maintenance/views/maintenance_logs_views.xml index b3922595..1b7b28f3 100644 --- a/sf_maintenance/views/maintenance_logs_views.xml +++ b/sf_maintenance/views/maintenance_logs_views.xml @@ -8,8 +8,8 @@ - - + + @@ -37,13 +37,14 @@ - + - + + @@ -57,7 +58,6 @@ - diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py index a18dc5ef..868964d5 100644 --- a/sf_manufacturing/models/agv_scheduling.py +++ b/sf_manufacturing/models/agv_scheduling.py @@ -156,17 +156,26 @@ class AgvScheduling(models.Model): if agv_site_state == '空闲': # 查询终点接驳站为agv_site_id的AGV路线 task_routes = self.env['sf.agv.task.route'].sudo().search([('end_site_id', '=', agv_site_id)]) - agv_scheduling = self.env['sf.agv.scheduling'].sudo().search( + agv_schedulings = self.env['sf.agv.scheduling'].sudo().search( [('state', '=', '待下发'), ('agv_route_type', 'in', task_routes.mapped('route_type'))], order='id asc', - limit=1 ) - task_route = task_routes.filtered( - lambda r: r.start_site_id == agv_scheduling.start_site_id and r.start_site_id == agv_scheduling.start_site_id - ) - if task_route: - # 下发AGV调度任务并修改接驳站状态为占用 - agv_scheduling.dispatch_scheduling(task_route) + for agv_scheduling in agv_schedulings: + # 找到所有起点接驳站匹配的路线 + start_matched_task_routes = task_routes.filtered( + lambda r: r.start_site_id == agv_scheduling.start_site_id + ) + # 如果调度任务有终点接驳站,找到终点接驳站匹配的路线 + if agv_scheduling.end_site_id: + matched_task_routes = start_matched_task_routes.filtered( + lambda r: r.end_site_id == agv_scheduling.end_site_id + ) + else: + matched_task_routes = start_matched_task_routes + if matched_task_routes: + # 下发AGV调度任务并修改接驳站状态为占用 + agv_scheduling.dispatch_scheduling(matched_task_routes[0]) + break; def _delivery_avg(self): config = self.env['res.config.settings'].get_values() diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 5a78f36b..7c3ec50f 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1082,6 +1082,12 @@ class ResMrpWorkOrder(models.Model): # 重写工单开始按钮方法 def button_start(self): + if self.routing_type == 'CNC加工': + self.env['sf.production.plan'].sudo().search([('name', '=', self.production_id.name)]).write({ + 'state': 'processing', + 'actual_start_time': datetime.now() + }) + if self.routing_type == '装夹预调': # 判断是否有坯料的序列号信息 boolean = False diff --git a/sf_message/__manifest__.py b/sf_message/__manifest__.py index f9dfd741..7139f840 100644 --- a/sf_message/__manifest__.py +++ b/sf_message/__manifest__.py @@ -11,7 +11,7 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock','sf_tool_management'], + 'depends': ['sale', 'purchase', 'sf_plan', 'jikimo_message_notify','stock', 'sf_tool_management', 'sf_manufacturing', 'sf_hr'], 'data': [ 'data/bussiness_node.xml', ], diff --git a/sf_message/models/sf_message_purchase.py b/sf_message/models/sf_message_purchase.py index 8d95ffaf..96d0f8dc 100644 --- a/sf_message/models/sf_message_purchase.py +++ b/sf_message/models/sf_message_purchase.py @@ -1,6 +1,35 @@ from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessagePurchase(models.Model): _name = 'purchase.order' _inherit = ['purchase.order', 'jikimo.message.dispatch'] + + def _get_message(self, message_queue_ids): + contents = [] + for message_queue_id in message_queue_ids: + if message_queue_id.message_template_id.name == '坯料采购提醒': + content = message_queue_id.message_template_id.content + url = self.request_url(int(message_queue_id.res_id)) + purchase_order_line = self.env['purchase.order'].search([('id', '=', int(message_queue_id.res_id))]) + content = content.replace('{{name}}', purchase_order_line.name).replace( + '{{request_url}}', url) + contents.append(content) + return contents + + def request_url(self, id): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('purchase.purchase_form_action').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_website_payment')]).id + # 查询参数 + params = {'id': id, 'menu_id': menu_id, 'action': action_id, + 'model': 'purchase.order', + 'view_type': 'form'} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url diff --git a/sf_message/models/sf_message_sale.py b/sf_message/models/sf_message_sale.py index 6519b7a1..b838134f 100644 --- a/sf_message/models/sf_message_sale.py +++ b/sf_message/models/sf_message_sale.py @@ -41,12 +41,20 @@ class SFMessageSale(models.Model): # 继承并重写jikimo.message.dispatch的_get_message() def _get_message(self, message_queue_ids): res = super(SFMessageSale, self)._get_message(message_queue_ids) - if message_queue_ids.message_template_id.bussiness_node_id.name == '确认接单': - # sale_order = self.env['sale.order'].search([('id', '=', message_queue_ids.model.res_id)]) - sale_order_line = self.env['sale.order.line'].search([('order_id', '=', int(message_queue_ids.res_id))]) - if len(sale_order_line) == 1: - product = sale_order_line[0].product_id.name - elif len(sale_order_line) > 1: - product = '%s...' % sale_order_line[0].product_id.name - res[0] = res[0].replace('{{product_id}}', product) + new_res = [] + processed_messages = set() # 用于跟踪已经处理过的消息 + for item in message_queue_ids: + if item.message_template_id.bussiness_node_id.name == '确认接单': + sale_order_line = self.env['sale.order.line'].search([('order_id', '=', int(item.res_id))]) + if len(sale_order_line) == 1: + product = sale_order_line[0].product_id.name + elif len(sale_order_line) > 1: + product = '%s...' % sale_order_line[0].product_id.name + for message in res: + message_text = message.replace('{{product_id}}', product) + if message_text not in processed_messages: + new_res.append(message_text) + processed_messages.add(message_text) + if new_res: + res = new_res return res diff --git a/sf_message/models/sf_message_stock_picking.py b/sf_message/models/sf_message_stock_picking.py index 95225948..fdb9d4cf 100644 --- a/sf_message/models/sf_message_stock_picking.py +++ b/sf_message/models/sf_message_stock_picking.py @@ -1,5 +1,6 @@ import re from odoo import models, fields, api, _ +from urllib.parse import urlencode class SFMessageStockPicking(models.Model): @@ -15,7 +16,6 @@ class SFMessageStockPicking(models.Model): obj.add_queue('调拨入库') return result - @api.depends('move_type', 'immediate_transfer', 'move_ids.state', 'move_ids.picking_id') def _compute_state(self): super(SFMessageStockPicking, self)._compute_state() @@ -41,7 +41,7 @@ class SFMessageStockPicking(models.Model): if picking_id.state == 'assigned' and picking_id.check_in == 'PC': i += 1 if i > 0 and mrp_production_info.product_id.id not in product_id: - url = message_queue_id.message_template_id.get_url(int(message_queue_id.res_id)) + url = self.request_url() content = content.replace('{{product_id}}', mrp_production_info.product_id.name).replace( '{{number}}', str(i)).replace('{{request_url}}', url) product_id.append(mrp_production_info.product_id.id) @@ -50,3 +50,18 @@ class SFMessageStockPicking(models.Model): else: res = super(SFMessageStockPicking, self)._get_message(message_queue_id) return res + + def request_url(self): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('stock.stock_picking_type_action').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_theme_treehouse')]).id + # 查询参数 + params = {'menu_id': menu_id, 'action': action_id, 'model': 'stock.picking', + 'view_type': 'kanban'} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url diff --git a/sf_message/models/sf_message_workorder.py b/sf_message/models/sf_message_workorder.py index 0f211198..9d18e656 100644 --- a/sf_message/models/sf_message_workorder.py +++ b/sf_message/models/sf_message_workorder.py @@ -1,5 +1,10 @@ from odoo import models, fields, api, _ +import logging, json +import requests +from odoo.addons.sf_base.commons.common import Common +from urllib.parse import urlencode +_logger = logging.getLogger(__name__) class SFMessageWork(models.Model): _name = 'mrp.workorder' @@ -10,7 +15,10 @@ class SFMessageWork(models.Model): super(SFMessageWork, self)._compute_state() for workorder in self: if workorder.state == 'ready' and workorder.routing_type == '装夹预调': - workorder.add_queue('工单已下发通知') + jikimo_message_queue = self.env['jikimo.message.queue'].sudo().search( + [('res_id', '=', workorder.id), ("message_status", "=", "pending")]) + if not jikimo_message_queue: + workorder.add_queue('工单已下发通知') def _get_message(self, message_queue_ids): contents = [] @@ -23,12 +31,47 @@ class SFMessageWork(models.Model): [('product_id', '=', mrp_workorder_line.product_id.id), ('state', '=', 'ready'), ('routing_type', '=', '装夹预调')]) if len(mrp_workorder_list) > 0 and mrp_workorder_line.product_id.id not in product_id: - url = message_queue_id.message_template_id.get_url(int(message_queue_id.res_id)) + "&active_id=1" + url = self.request_url() content = content.replace('{{product_id}}', mrp_workorder_line.product_id.name).replace( '{{number}}', str(len(mrp_workorder_list))).replace( - '{{part_number}}', - mrp_workorder_line.part_number if mrp_workorder_line.part_number else "").replace( '{{request_url}}', url) product_id.append(mrp_workorder_line.product_id.id) contents.append(content) return contents + + @api.depends('cnc_ids.tool_state') + def _compute_tool_state(self): + # 将self的id与tool_state进行保存 + tool_state_dict = {record.id: record.tool_state for record in self} + res = super(SFMessageWork, self)._compute_tool_state() + data = {'name': []} + for record in self: + if tool_state_dict[record.id] != '2' and record.tool_state == '2': + data['name'].append(record.production_id.programming_no) + + if data['name']: + # 请求cloud接口,发送微信消息推送 + configsettings = self.env['res.config.settings'].get_values() + config_header = Common.get_headers(self, configsettings['token'], configsettings['sf_secret_key']) + url = '/api/message/invalid_tool_state' + config_url = configsettings['sf_url'] + url + data['token'] = configsettings['token'] + ret = requests.post(config_url, json=data, headers=config_header) + ret = ret.json() + _logger.info('无效用刀异常消息推送接口:%s' % ret) + return res + + def request_url(self): + we_config_info = self.env['we.config'].sudo().search([], limit=1) + redirect_domain = self.env['we.app'].sudo().search([('id', '=', we_config_info.odoo_app_id.id)]).redirect_domain + full_url = 'https://%s/' % redirect_domain + action_id = self.env.ref('sf_manufacturing.mrp_workorder_action_tablet').id + menu_id = self.env['ir.model.data'].search([('name', '=', 'module_stock_dropshipping')]).id + # 查询参数 + params = {'menu_id': menu_id, 'action': action_id, 'model': 'mrp.workorder', + 'view_type': 'list', 'active_id': 1} + # 拼接查询参数 + query_string = urlencode(params) + # 拼接URL + full_url = full_url + "web#" + query_string + return full_url diff --git a/sf_plan/static/description/计划.png b/sf_plan/static/description/计划.png new file mode 100644 index 00000000..e4efa9f9 Binary files /dev/null and b/sf_plan/static/description/计划.png differ diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml index 82382ef3..bfb584b8 100644 --- a/sf_plan/views/view.xml +++ b/sf_plan/views/view.xml @@ -278,6 +278,7 @@ sequence="150" action="sf_production_plan_action" groups="sf_base.group_plan_dispatch" + web_icon="sf_plan,static/description/计划.png" /> diff --git a/sf_stock/models/stock_picking.py b/sf_stock/models/stock_picking.py index 3a64f78c..a429db36 100644 --- a/sf_stock/models/stock_picking.py +++ b/sf_stock/models/stock_picking.py @@ -74,6 +74,8 @@ class StockPicking(models.Model): def send_to_bfm(self): skip_backorder = self.env.context.get('skip_backorder') + cancel_backorder_ids = self.env.context.get('picking_ids_not_to_backorder') + # 下发发货到bfm config = self.env['res.config.settings'].get_values() move_ids, move_line_ids = self.deal_move_ids(self.move_ids, self.move_line_ids) @@ -92,13 +94,13 @@ class StockPicking(models.Model): 'state': self.state, 'backorder_id': self.deal_send_backorder_id(self.backorder_id), 'backorder_ids': self.deal_send_backorder_id(self.backorder_ids), - 'cancel_backorder_ids': skip_backorder, + 'cancel_backorder_ids': True if skip_backorder and cancel_backorder_ids else False, # 没有欠单判断 'move_type': self.move_type, }, } url1 = config['bfm_url_new'] + '/api/stock/deliver_goods' json_str = json.dumps(data) - print('json_str', json_str) + logging.info('json_str= %s', json_str) r = requests.post(url1, json=data, data=None) if r.status_code == 200: result = json.loads(r.json()['result']) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index cbdc1d22..33ab0790 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -185,6 +185,7 @@ class CAMWorkOrderProgramKnifePlan(models.Model): _description = 'CAM工单程序用刀计划' name = fields.Char('工单任务编号') + programming_no = fields.Char('编程单号') cam_procedure_code = fields.Char('程序名') filename = fields.Char('文件') cam_cutter_spacing_code = fields.Char('刀号') @@ -317,23 +318,33 @@ class CAMWorkOrderProgramKnifePlan(models.Model): """ 根据传入的工单信息,查询是否有需要的功能刀具,如果没有则生成CAM工单程序用刀计划 """ - knife_plan = self.env['sf.cam.work.order.program.knife.plan'].sudo().create({ - 'name': cnc_processing.workorder_id.production_id.name, - 'cam_procedure_code': cnc_processing.program_name, - 'filename': cnc_processing.cnc_id.name, - 'functional_tool_name': cnc_processing.cutting_tool_name, - 'cam_cutter_spacing_code': cnc_processing.cutting_tool_no, - 'process_type': cnc_processing.processing_type, - 'margin_x_y': float(cnc_processing.margin_x_y), - 'margin_z': float(cnc_processing.margin_z), - 'finish_depth': float(cnc_processing.depth_of_processing_z), - 'extension_length': float(cnc_processing.cutting_tool_extension_length), - 'shank_model': cnc_processing.cutting_tool_handle_type, - 'estimated_processing_time': cnc_processing.estimated_processing_time, - }) - logging.info('CAM工单程序用刀计划创建成功!!!') - # 创建装刀请求 - knife_plan.apply_for_tooling() + + # 获取编程单号 + programming_no = cnc_processing.workorder_id.production_id.programming_no + logging.info(f'编程单号:{programming_no}') + cam_id = self.env['sf.cam.work.order.program.knife.plan'].sudo().search( + [('programming_no', '=', programming_no), + ('functional_tool_name', '=', cnc_processing.cutting_tool_name)]) + logging.info(f'CAM装刀计划:{cam_id}') + if not cam_id: + knife_plan = self.env['sf.cam.work.order.program.knife.plan'].sudo().create({ + 'name': cnc_processing.workorder_id.production_id.name, + 'programming_no': programming_no, + 'cam_procedure_code': cnc_processing.program_name, + 'filename': cnc_processing.cnc_id.name, + 'functional_tool_name': cnc_processing.cutting_tool_name, + 'cam_cutter_spacing_code': cnc_processing.cutting_tool_no, + 'process_type': cnc_processing.processing_type, + 'margin_x_y': float(cnc_processing.margin_x_y), + 'margin_z': float(cnc_processing.margin_z), + 'finish_depth': float(cnc_processing.depth_of_processing_z), + 'extension_length': float(cnc_processing.cutting_tool_extension_length), + 'shank_model': cnc_processing.cutting_tool_handle_type, + 'estimated_processing_time': cnc_processing.estimated_processing_time, + }) + logging.info('CAM工单程序用刀计划创建成功!!!') + # 创建装刀请求 + knife_plan.apply_for_tooling() def unlink_cam_plan(self, production): for item in production: diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index e8ea607f..a83faa6a 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -283,21 +283,22 @@ - - + + + - + - - + + @@ -332,6 +333,7 @@ + @@ -388,6 +390,7 @@ sf.cam.work.order.program.knife.plan + diff --git a/sf_tool_management/views/tool_inventory.xml b/sf_tool_management/views/tool_inventory.xml index c437a5b2..25fb8276 100644 --- a/sf_tool_management/views/tool_inventory.xml +++ b/sf_tool_management/views/tool_inventory.xml @@ -16,7 +16,7 @@ sf.tool.inventory.inherit.search sf.tool.inventory - + diff --git a/vista_backend_theme/__init__.py b/vista_backend_theme/__init__.py deleted file mode 100644 index 0e0b6dfa..00000000 --- a/vista_backend_theme/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################# -# -# Cybrosys Technologies Pvt. Ltd. -# -# Copyright (C) 2022-TODAY Cybrosys Technologies() -# Author: Cybrosys Techno Solutions() -# -# You can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# (LGPL v3) along with this program. -# If not, see . -# -############################################################################# -from .hooks import test_pre_init_hook, test_post_init_hook -from . import wizard -from . import models - diff --git a/vista_backend_theme/__manifest__.py b/vista_backend_theme/__manifest__.py deleted file mode 100644 index 8582050b..00000000 --- a/vista_backend_theme/__manifest__.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################# -# -# Cybrosys Technologies Pvt. Ltd. -# -# Copyright (C) 2022-TODAY Cybrosys Technologies() -# Author: Cybrosys Techno Solutions() -# -# You can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# (LGPL v3) along with this program. -# If not, see . -# -############################################################################# - -{ - "name": "Vista Backend Theme V16", - "description": """Minimalist and elegant backend theme for Odoo 16, Backend Theme, Theme""", - "summary": "Vista Backend Theme V16 is an attractive theme for backend", - "category": "Themes/Backend", - "version": "16.0.1.0.0", - 'author': 'Cybrosys Techno Solutions', - 'company': 'Cybrosys Techno Solutions', - 'maintainer': 'Cybrosys Techno Solutions', - 'website': "https://www.cybrosys.com", - "depends": ['base', 'web', 'mail', 'base_setup'], - "data": [ - 'security/ir.model.access.csv', - 'views/icons.xml', - 'views/layout.xml', - 'views/theme.xml', - 'views/assets.xml', - 'data/theme_data.xml', - 'views/res_config.xml', - ], - 'assets': { - 'web.assets_backend': { - '/vista_backend_theme/static/src/scss/theme.scss', - '/vista_backend_theme/static/src/js/systray.js', - '/vista_backend_theme/static/src/js/load.js', - '/vista_backend_theme/static/src/js/chrome/sidebar_menu.js', - '/vista_backend_theme/static/src/xml/systray.xml', - '/vista_backend_theme/static/src/xml/top_bar.xml', - '/vista_backend_theme/static/src/js/web_window_title.js', - }, - 'web.assets_frontend': { - '/vista_backend_theme/static/src/scss/login.scss', - '/vista_backend_theme/static/src/scss/login.scss', - - }, - }, - 'images': [ - 'static/description/banner.png', - 'static/description/theme_screenshot.png', - 'static/description/main_screenshot.png', - ], - 'license': 'LGPL-3', - 'pre_init_hook': 'test_pre_init_hook', - 'post_init_hook': 'test_post_init_hook', - 'installable': True, - 'application': False, - 'auto_install': False, -} diff --git a/vista_backend_theme/data/demo.xml b/vista_backend_theme/data/demo.xml deleted file mode 100644 index 937ce77e..00000000 --- a/vista_backend_theme/data/demo.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - web.base.title - Demo - - - - \ No newline at end of file diff --git a/vista_backend_theme/data/theme_data.xml b/vista_backend_theme/data/theme_data.xml deleted file mode 100644 index 1b0f85d2..00000000 --- a/vista_backend_theme/data/theme_data.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - default - - - diff --git a/vista_backend_theme/hooks.py b/vista_backend_theme/hooks.py deleted file mode 100644 index b091628e..00000000 --- a/vista_backend_theme/hooks.py +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################# -# -# Cybrosys Technologies Pvt. Ltd. -# -# Copyright (C) 2022-TODAY Cybrosys Technologies() -# Author: Cybrosys Techno Solutions() -# -# You can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# (LGPL v3) along with this program. -# If not, see . -# -############################################################################# -import base64 - -from odoo import api, SUPERUSER_ID -from odoo.modules import get_module_resource - - -def test_pre_init_hook(cr): - """pre init hook""" - - env = api.Environment(cr, SUPERUSER_ID, {}) - menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)]) - - for menu in menu_item: - if menu.name == 'Contacts': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'contacts.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Link Tracker': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'link-tracker.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Dashboards': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'dashboards.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Sales': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'sales.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Invoicing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Inventory': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'inventory.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Purchase': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'purchase.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Calendar': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'calendar.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'CRM': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'crm.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Note': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'note.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Website': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'website.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Point of Sale': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'pos.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Manufacturing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'manufacturing.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Repairs': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'repairs.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Email Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'email-marketing.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'SMS Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'sms-marketing.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Project': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'project.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Surveys': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'surveys.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Employees': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'employee.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Recruitment': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'recruitment.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Attendances': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'attendances.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Time Off': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'timeoff.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Expenses': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'expenses.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Maintenance': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'maintenance.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Live Chat': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'live-chat.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Lunch': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'lunch.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Fleet': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'fleet.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Timesheets': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'timesheets.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Events': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'events.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'eLearning': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'elearning.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - if menu.name == 'Members': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', 'members.png') - menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) - - -def test_post_init_hook(cr, registry): - """post init hook""" - env = api.Environment(cr, SUPERUSER_ID, {}) diff --git a/vista_backend_theme/models/__init__.py b/vista_backend_theme/models/__init__.py deleted file mode 100644 index b4db3f9a..00000000 --- a/vista_backend_theme/models/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# -*- coding: utf-8 -*- - -from . import ir_ui_view -from . import res_config diff --git a/vista_backend_theme/models/ir_ui_view.py b/vista_backend_theme/models/ir_ui_view.py deleted file mode 100644 index 633dbc95..00000000 --- a/vista_backend_theme/models/ir_ui_view.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging - -from odoo import api, fields, models, _ - -_logger = logging.getLogger(__name__) - -class View(models.Model): - _inherit = 'ir.ui.view' - - @api.model - def _render_template(self, template, values=None): - if template in ['web.login', 'web.webclient_bootstrap']: - if not values: - values = {} - values["title"] = self.env['ir.config_parameter'].sudo().get_param("web.base.title", "") - return super(View, self)._render_template(template, values) diff --git a/vista_backend_theme/models/res_config.py b/vista_backend_theme/models/res_config.py deleted file mode 100644 index dcacb5de..00000000 --- a/vista_backend_theme/models/res_config.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- - -import logging - -from odoo import api, fields, models, _ - -_logger = logging.getLogger(__name__) - -CONFIG_PARAM_WEB_WINDOW_TITLE = "web.base.title" - -class ResConfigSettings(models.TransientModel): - _inherit = 'res.config.settings' - - web_window_title = fields.Char('Window Title') - - @api.model - def get_values(self): - res = super(ResConfigSettings, self).get_values() - ir_config = self.env['ir.config_parameter'].sudo() - web_window_title = ir_config.get_param(CONFIG_PARAM_WEB_WINDOW_TITLE, default='') - res.update( - web_window_title=web_window_title - ) - return res - - def set_values(self): - super(ResConfigSettings, self).set_values() - ir_config = self.env['ir.config_parameter'].sudo() - ir_config.set_param(CONFIG_PARAM_WEB_WINDOW_TITLE, self.web_window_title or "") diff --git a/vista_backend_theme/security/ir.model.access.csv b/vista_backend_theme/security/ir.model.access.csv deleted file mode 100644 index 8e9ee184..00000000 --- a/vista_backend_theme/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_theme_data,access.theme.data,model_theme_data,,1,1,1,1 diff --git a/vista_backend_theme/static/description/assets/icons/chevron.png b/vista_backend_theme/static/description/assets/icons/chevron.png deleted file mode 100644 index 2089293d..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/chevron.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/cogs.png b/vista_backend_theme/static/description/assets/icons/cogs.png deleted file mode 100644 index 95d0bad6..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/cogs.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/consultation.png b/vista_backend_theme/static/description/assets/icons/consultation.png deleted file mode 100644 index 8319d4ba..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/consultation.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/ecom-black.png b/vista_backend_theme/static/description/assets/icons/ecom-black.png deleted file mode 100644 index a9385ff1..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/ecom-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/education-black.png b/vista_backend_theme/static/description/assets/icons/education-black.png deleted file mode 100644 index 3eb09b27..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/education-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/hotel-black.png b/vista_backend_theme/static/description/assets/icons/hotel-black.png deleted file mode 100644 index 130f613b..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/hotel-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/license.png b/vista_backend_theme/static/description/assets/icons/license.png deleted file mode 100644 index a5869797..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/license.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/lifebuoy.png b/vista_backend_theme/static/description/assets/icons/lifebuoy.png deleted file mode 100644 index 658d56cc..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/lifebuoy.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/manufacturing-black.png b/vista_backend_theme/static/description/assets/icons/manufacturing-black.png deleted file mode 100644 index 697eb0e9..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/manufacturing-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/pos-black.png b/vista_backend_theme/static/description/assets/icons/pos-black.png deleted file mode 100644 index 97c0f90c..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/pos-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/puzzle.png b/vista_backend_theme/static/description/assets/icons/puzzle.png deleted file mode 100644 index 65cf854e..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/puzzle.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/restaurant-black.png b/vista_backend_theme/static/description/assets/icons/restaurant-black.png deleted file mode 100644 index 4a35eb93..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/restaurant-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/service-black.png b/vista_backend_theme/static/description/assets/icons/service-black.png deleted file mode 100644 index 301ab51c..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/service-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/trading-black.png b/vista_backend_theme/static/description/assets/icons/trading-black.png deleted file mode 100644 index 9398ba2f..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/trading-black.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/training.png b/vista_backend_theme/static/description/assets/icons/training.png deleted file mode 100644 index 884ca024..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/training.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/update.png b/vista_backend_theme/static/description/assets/icons/update.png deleted file mode 100644 index ecbc5a01..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/update.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/user.png b/vista_backend_theme/static/description/assets/icons/user.png deleted file mode 100644 index 6ffb23d9..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/user.png and /dev/null differ diff --git a/vista_backend_theme/static/description/assets/icons/wrench.png b/vista_backend_theme/static/description/assets/icons/wrench.png deleted file mode 100644 index 6c04dea0..00000000 Binary files a/vista_backend_theme/static/description/assets/icons/wrench.png and /dev/null differ diff --git a/vista_backend_theme/static/description/banner.png b/vista_backend_theme/static/description/banner.png deleted file mode 100644 index ee5ab0d2..00000000 Binary files a/vista_backend_theme/static/description/banner.png and /dev/null differ diff --git a/vista_backend_theme/static/description/icon.png b/vista_backend_theme/static/description/icon.png deleted file mode 100644 index 69b4507f..00000000 Binary files a/vista_backend_theme/static/description/icon.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/app_drawer.png b/vista_backend_theme/static/description/images/app_drawer.png deleted file mode 100644 index 273ecd73..00000000 Binary files a/vista_backend_theme/static/description/images/app_drawer.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/custom_date.png b/vista_backend_theme/static/description/images/custom_date.png deleted file mode 100644 index 1550395b..00000000 Binary files a/vista_backend_theme/static/description/images/custom_date.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/discuss.png b/vista_backend_theme/static/description/images/discuss.png deleted file mode 100644 index 51af4628..00000000 Binary files a/vista_backend_theme/static/description/images/discuss.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/discuss_mobile.png b/vista_backend_theme/static/description/images/discuss_mobile.png deleted file mode 100644 index 77cc6da6..00000000 Binary files a/vista_backend_theme/static/description/images/discuss_mobile.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/form_view.png b/vista_backend_theme/static/description/images/form_view.png deleted file mode 100644 index f4de53bc..00000000 Binary files a/vista_backend_theme/static/description/images/form_view.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/hero.gif b/vista_backend_theme/static/description/images/hero.gif deleted file mode 100644 index 56939001..00000000 Binary files a/vista_backend_theme/static/description/images/hero.gif and /dev/null differ diff --git a/vista_backend_theme/static/description/images/icons/design.png b/vista_backend_theme/static/description/images/icons/design.png deleted file mode 100644 index f09d096e..00000000 Binary files a/vista_backend_theme/static/description/images/icons/design.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/icons/quality.png b/vista_backend_theme/static/description/images/icons/quality.png deleted file mode 100644 index 81de174a..00000000 Binary files a/vista_backend_theme/static/description/images/icons/quality.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/icons/responsive.png b/vista_backend_theme/static/description/images/icons/responsive.png deleted file mode 100644 index d3cd0869..00000000 Binary files a/vista_backend_theme/static/description/images/icons/responsive.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/kanban.png b/vista_backend_theme/static/description/images/kanban.png deleted file mode 100644 index ecf0f82e..00000000 Binary files a/vista_backend_theme/static/description/images/kanban.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/kanban_mobile.png b/vista_backend_theme/static/description/images/kanban_mobile.png deleted file mode 100644 index eef8b831..00000000 Binary files a/vista_backend_theme/static/description/images/kanban_mobile.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/login.png b/vista_backend_theme/static/description/images/login.png deleted file mode 100644 index ab34a37f..00000000 Binary files a/vista_backend_theme/static/description/images/login.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/responsive.png b/vista_backend_theme/static/description/images/responsive.png deleted file mode 100644 index e1a91a1c..00000000 Binary files a/vista_backend_theme/static/description/images/responsive.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/sale_tree_view.png b/vista_backend_theme/static/description/images/sale_tree_view.png deleted file mode 100644 index 80ca1ab6..00000000 Binary files a/vista_backend_theme/static/description/images/sale_tree_view.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/search.png b/vista_backend_theme/static/description/images/search.png deleted file mode 100644 index 812a26c4..00000000 Binary files a/vista_backend_theme/static/description/images/search.png and /dev/null differ diff --git a/vista_backend_theme/static/description/images/tree_view.png b/vista_backend_theme/static/description/images/tree_view.png deleted file mode 100644 index c0ccf378..00000000 Binary files a/vista_backend_theme/static/description/images/tree_view.png and /dev/null differ diff --git a/vista_backend_theme/static/description/index.html b/vista_backend_theme/static/description/index.html deleted file mode 100644 index ee1968de..00000000 --- a/vista_backend_theme/static/description/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - Vista Backend Theme V16 - Multi-Color - & Multi-Design Backend Theme for - Odoo 16 - - - - - - - - - - The app enables a user friendly backend - theme for Odoo 16.0 community edition. - - - - - - - - - - - - Carefully Crafted - - - - - - - Responsive Design - - - - - - - Quality Checked - - - - - - - - - - Kanban View - Kanban view with a clean layout and modified font. - - - - - - - - - - - Custom - Login - Minimal, Colorful Login Screen - Customized minimal and colorful login screen. - - - - - Colored UI - Elements - Discuss - Discuss page with a different style. - - - - - - - - - - - - - - - Responsive - Layout - Truly Responsive - Fully responsive layout which enables to view and manage everything from the - comfort of your mobile device. - - - - - - - - - - - Responsive - Layout - Modified App Drawer - Modified app drawer which helps to navigate through different applications. - - - - - - - - - - - - - - - - - Colored UI - Elements - Custom Date Picker - Customized date picker - - - - - - - - - - - - Colored UI - Elements - Tree View - Tree view with a clean layout and modified font. - - - - - Colored UI - Elements - Form View - Form view with a clean layout and modified font. - - - - - - - - - - - - - Our Services - - We provide following services - - - - - - - Odoo - Customization - - - - - - - Odoo - Implementation - - - - - - - Odoo - Support - - - - - - - - Hire - Odoo - Developer - - - - - - - Odoo - Integration - - - - - - - Odoo - Migration - - - - - - - - Odoo - Consultancy - - - - - - - Odoo - Implementation - - - - - - - Odoo - Licensing Consultancy - - - - - - - - - - - Our Industries - - Our industry specifics and process segments to solve your complex business barriers. - - - - - - - Trading - - Easily procure - and - sell your products - - - - - - - - POS - - Easy - configuration - and convivial experience - - - - - - - - Education - - A platform for - educational management - - - - - - - - Manufacturing - - Plan, track and - schedule your operations - - - - - - - - E-commerce & Website - - Mobile - friendly, - awe-inspiring product pages - - - - - - - - Service Management - - Keep track of - services and invoice - - - - - - - - Restaurant - - Run your bar or - restaurant methodically - - - - - - - - Hotel Management - - An - all-inclusive - hotel management application - - - - - - - - - - - - - - - Need Help? - - Do you have any queries regarding our products & services? Let us know. - - - - - - - - - - - odoo@cybrosys.com - - - WhatsApp - - - cybrosystechnologies - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/static/description/main_screenshot.png b/vista_backend_theme/static/description/main_screenshot.png deleted file mode 100644 index fdca2294..00000000 Binary files a/vista_backend_theme/static/description/main_screenshot.png and /dev/null differ diff --git a/vista_backend_theme/static/description/theme_screenshot.png b/vista_backend_theme/static/description/theme_screenshot.png deleted file mode 100644 index d79893e7..00000000 Binary files a/vista_backend_theme/static/description/theme_screenshot.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/accounting.png b/vista_backend_theme/static/src/img/icons/accounting.png deleted file mode 100644 index f496ce70..00000000 Binary files a/vista_backend_theme/static/src/img/icons/accounting.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/apps.png b/vista_backend_theme/static/src/img/icons/apps.png deleted file mode 100644 index ee8031f2..00000000 Binary files a/vista_backend_theme/static/src/img/icons/apps.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/attendance.png b/vista_backend_theme/static/src/img/icons/attendance.png deleted file mode 100644 index 86c84cd9..00000000 Binary files a/vista_backend_theme/static/src/img/icons/attendance.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/bell.png b/vista_backend_theme/static/src/img/icons/bell.png deleted file mode 100644 index 77caa55c..00000000 Binary files a/vista_backend_theme/static/src/img/icons/bell.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/calendar.png b/vista_backend_theme/static/src/img/icons/calendar.png deleted file mode 100644 index e07d78c6..00000000 Binary files a/vista_backend_theme/static/src/img/icons/calendar.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/contacts.png b/vista_backend_theme/static/src/img/icons/contacts.png deleted file mode 100644 index 8582a80b..00000000 Binary files a/vista_backend_theme/static/src/img/icons/contacts.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/crm.png b/vista_backend_theme/static/src/img/icons/crm.png deleted file mode 100644 index cb305553..00000000 Binary files a/vista_backend_theme/static/src/img/icons/crm.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dashboards.png b/vista_backend_theme/static/src/img/icons/dashboards.png deleted file mode 100644 index 12c0769c..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dashboards.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/discuss.png b/vista_backend_theme/static/src/img/icons/discuss.png deleted file mode 100644 index 8dac1f03..00000000 Binary files a/vista_backend_theme/static/src/img/icons/discuss.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/documents.png b/vista_backend_theme/static/src/img/icons/documents.png deleted file mode 100644 index e9146849..00000000 Binary files a/vista_backend_theme/static/src/img/icons/documents.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dots-menu-green.png b/vista_backend_theme/static/src/img/icons/dots-menu-green.png deleted file mode 100644 index c64e6405..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dots-menu-green.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dots-menu-navy.png b/vista_backend_theme/static/src/img/icons/dots-menu-navy.png deleted file mode 100644 index 8c97a426..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dots-menu-navy.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dots-menu-primary.png b/vista_backend_theme/static/src/img/icons/dots-menu-primary.png deleted file mode 100644 index 527574d6..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dots-menu-primary.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dots-menu.png b/vista_backend_theme/static/src/img/icons/dots-menu.png deleted file mode 100644 index 6188bc22..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dots-menu.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/dots-menu2.png b/vista_backend_theme/static/src/img/icons/dots-menu2.png deleted file mode 100644 index ebee2b80..00000000 Binary files a/vista_backend_theme/static/src/img/icons/dots-menu2.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/elearning.png b/vista_backend_theme/static/src/img/icons/elearning.png deleted file mode 100644 index 986fb047..00000000 Binary files a/vista_backend_theme/static/src/img/icons/elearning.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/email-marketing.png b/vista_backend_theme/static/src/img/icons/email-marketing.png deleted file mode 100644 index 12addfd3..00000000 Binary files a/vista_backend_theme/static/src/img/icons/email-marketing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/employee.png b/vista_backend_theme/static/src/img/icons/employee.png deleted file mode 100644 index 6532a023..00000000 Binary files a/vista_backend_theme/static/src/img/icons/employee.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/events.png b/vista_backend_theme/static/src/img/icons/events.png deleted file mode 100644 index df607fa4..00000000 Binary files a/vista_backend_theme/static/src/img/icons/events.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/expenses.png b/vista_backend_theme/static/src/img/icons/expenses.png deleted file mode 100644 index 8df58834..00000000 Binary files a/vista_backend_theme/static/src/img/icons/expenses.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/fleet.png b/vista_backend_theme/static/src/img/icons/fleet.png deleted file mode 100644 index a03b1fce..00000000 Binary files a/vista_backend_theme/static/src/img/icons/fleet.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/inventory.png b/vista_backend_theme/static/src/img/icons/inventory.png deleted file mode 100644 index b4bb3f4b..00000000 Binary files a/vista_backend_theme/static/src/img/icons/inventory.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/link-tracker.png b/vista_backend_theme/static/src/img/icons/link-tracker.png deleted file mode 100644 index 052f1400..00000000 Binary files a/vista_backend_theme/static/src/img/icons/link-tracker.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/live-chat.png b/vista_backend_theme/static/src/img/icons/live-chat.png deleted file mode 100644 index 348899bb..00000000 Binary files a/vista_backend_theme/static/src/img/icons/live-chat.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/lunch.png b/vista_backend_theme/static/src/img/icons/lunch.png deleted file mode 100644 index 60873c82..00000000 Binary files a/vista_backend_theme/static/src/img/icons/lunch.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/maintenance.png b/vista_backend_theme/static/src/img/icons/maintenance.png deleted file mode 100644 index 1710d800..00000000 Binary files a/vista_backend_theme/static/src/img/icons/maintenance.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/manufacturing.png b/vista_backend_theme/static/src/img/icons/manufacturing.png deleted file mode 100644 index c5069247..00000000 Binary files a/vista_backend_theme/static/src/img/icons/manufacturing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/members.png b/vista_backend_theme/static/src/img/icons/members.png deleted file mode 100644 index ce004aab..00000000 Binary files a/vista_backend_theme/static/src/img/icons/members.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/notes.png b/vista_backend_theme/static/src/img/icons/notes.png deleted file mode 100644 index 5da39fd8..00000000 Binary files a/vista_backend_theme/static/src/img/icons/notes.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/planning.png b/vista_backend_theme/static/src/img/icons/planning.png deleted file mode 100644 index 5423a12b..00000000 Binary files a/vista_backend_theme/static/src/img/icons/planning.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/pos.png b/vista_backend_theme/static/src/img/icons/pos.png deleted file mode 100644 index 54eb5b20..00000000 Binary files a/vista_backend_theme/static/src/img/icons/pos.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/project.png b/vista_backend_theme/static/src/img/icons/project.png deleted file mode 100644 index fa538151..00000000 Binary files a/vista_backend_theme/static/src/img/icons/project.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/purchase.png b/vista_backend_theme/static/src/img/icons/purchase.png deleted file mode 100644 index 653ae082..00000000 Binary files a/vista_backend_theme/static/src/img/icons/purchase.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/recruitment.png b/vista_backend_theme/static/src/img/icons/recruitment.png deleted file mode 100644 index ca680ed5..00000000 Binary files a/vista_backend_theme/static/src/img/icons/recruitment.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/repairs.png b/vista_backend_theme/static/src/img/icons/repairs.png deleted file mode 100644 index 09b4a593..00000000 Binary files a/vista_backend_theme/static/src/img/icons/repairs.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/sales.png b/vista_backend_theme/static/src/img/icons/sales.png deleted file mode 100644 index 33551fdb..00000000 Binary files a/vista_backend_theme/static/src/img/icons/sales.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/services.png b/vista_backend_theme/static/src/img/icons/services.png deleted file mode 100644 index 22e478fa..00000000 Binary files a/vista_backend_theme/static/src/img/icons/services.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/settinga.png b/vista_backend_theme/static/src/img/icons/settinga.png deleted file mode 100644 index a458f8e5..00000000 Binary files a/vista_backend_theme/static/src/img/icons/settinga.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/sms-marketing.png b/vista_backend_theme/static/src/img/icons/sms-marketing.png deleted file mode 100644 index ef1307d0..00000000 Binary files a/vista_backend_theme/static/src/img/icons/sms-marketing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/speech-bubble.png b/vista_backend_theme/static/src/img/icons/speech-bubble.png deleted file mode 100644 index c00880fb..00000000 Binary files a/vista_backend_theme/static/src/img/icons/speech-bubble.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/surveys.png b/vista_backend_theme/static/src/img/icons/surveys.png deleted file mode 100644 index 1d6ac982..00000000 Binary files a/vista_backend_theme/static/src/img/icons/surveys.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/timeoff.png b/vista_backend_theme/static/src/img/icons/timeoff.png deleted file mode 100644 index 3f00454b..00000000 Binary files a/vista_backend_theme/static/src/img/icons/timeoff.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/timesheet.png b/vista_backend_theme/static/src/img/icons/timesheet.png deleted file mode 100644 index afca506a..00000000 Binary files a/vista_backend_theme/static/src/img/icons/timesheet.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons/website.png b/vista_backend_theme/static/src/img/icons/website.png deleted file mode 100644 index bbbf0aa8..00000000 Binary files a/vista_backend_theme/static/src/img/icons/website.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/accounting.png b/vista_backend_theme/static/src/img/icons_green/accounting.png deleted file mode 100644 index 81c046ed..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/accounting.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/apps.png b/vista_backend_theme/static/src/img/icons_green/apps.png deleted file mode 100644 index ab8864a2..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/apps.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/attendance.png b/vista_backend_theme/static/src/img/icons_green/attendance.png deleted file mode 100644 index 9ba39c8b..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/attendance.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/bell.png b/vista_backend_theme/static/src/img/icons_green/bell.png deleted file mode 100644 index 08c167f3..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/bell.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/calendar.png b/vista_backend_theme/static/src/img/icons_green/calendar.png deleted file mode 100644 index 06643f6f..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/calendar.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/contacts.png b/vista_backend_theme/static/src/img/icons_green/contacts.png deleted file mode 100644 index 56a35088..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/contacts.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/crm.png b/vista_backend_theme/static/src/img/icons_green/crm.png deleted file mode 100644 index a67d78ea..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/crm.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/dashboards.png b/vista_backend_theme/static/src/img/icons_green/dashboards.png deleted file mode 100644 index 7b157cd0..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/dashboards.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/discuss.png b/vista_backend_theme/static/src/img/icons_green/discuss.png deleted file mode 100644 index 77dc5147..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/discuss.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/documents.png b/vista_backend_theme/static/src/img/icons_green/documents.png deleted file mode 100644 index 66332beb..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/documents.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/elearning.png b/vista_backend_theme/static/src/img/icons_green/elearning.png deleted file mode 100644 index 3ecf3e47..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/elearning.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/email-marketing.png b/vista_backend_theme/static/src/img/icons_green/email-marketing.png deleted file mode 100644 index e2d9f8f0..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/email-marketing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/employee.png b/vista_backend_theme/static/src/img/icons_green/employee.png deleted file mode 100644 index f111b0b7..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/employee.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/events.png b/vista_backend_theme/static/src/img/icons_green/events.png deleted file mode 100644 index f6adc69f..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/events.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/expenses.png b/vista_backend_theme/static/src/img/icons_green/expenses.png deleted file mode 100644 index 55bea20a..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/expenses.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/fleet.png b/vista_backend_theme/static/src/img/icons_green/fleet.png deleted file mode 100644 index f29df0b1..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/fleet.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/inventory.png b/vista_backend_theme/static/src/img/icons_green/inventory.png deleted file mode 100644 index 00966182..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/inventory.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/link-tracker.png b/vista_backend_theme/static/src/img/icons_green/link-tracker.png deleted file mode 100644 index 02d1b154..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/link-tracker.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/live-chat.png b/vista_backend_theme/static/src/img/icons_green/live-chat.png deleted file mode 100644 index f87b80f7..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/live-chat.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/lunch.png b/vista_backend_theme/static/src/img/icons_green/lunch.png deleted file mode 100644 index 2bee60d5..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/lunch.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/maintenance.png b/vista_backend_theme/static/src/img/icons_green/maintenance.png deleted file mode 100644 index 691e3308..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/maintenance.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/manufacturing.png b/vista_backend_theme/static/src/img/icons_green/manufacturing.png deleted file mode 100644 index c3ad4995..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/manufacturing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/members.png b/vista_backend_theme/static/src/img/icons_green/members.png deleted file mode 100644 index 4178f04c..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/members.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/notes.png b/vista_backend_theme/static/src/img/icons_green/notes.png deleted file mode 100644 index 7d766c07..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/notes.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/planning.png b/vista_backend_theme/static/src/img/icons_green/planning.png deleted file mode 100644 index 6c57ea8b..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/planning.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/pos.png b/vista_backend_theme/static/src/img/icons_green/pos.png deleted file mode 100644 index 904187a4..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/pos.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/project.png b/vista_backend_theme/static/src/img/icons_green/project.png deleted file mode 100644 index ecf627a3..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/project.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/purchase.png b/vista_backend_theme/static/src/img/icons_green/purchase.png deleted file mode 100644 index 4635eec5..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/purchase.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/recruitment.png b/vista_backend_theme/static/src/img/icons_green/recruitment.png deleted file mode 100644 index 8faaf128..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/recruitment.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/repairs.png b/vista_backend_theme/static/src/img/icons_green/repairs.png deleted file mode 100644 index 89f0ff72..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/repairs.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/sales.png b/vista_backend_theme/static/src/img/icons_green/sales.png deleted file mode 100644 index 81164740..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/sales.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/services.png b/vista_backend_theme/static/src/img/icons_green/services.png deleted file mode 100644 index 57ad052b..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/services.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/settinga.png b/vista_backend_theme/static/src/img/icons_green/settinga.png deleted file mode 100644 index 9dfcc0aa..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/settinga.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/sms-marketing.png b/vista_backend_theme/static/src/img/icons_green/sms-marketing.png deleted file mode 100644 index 8ec17575..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/sms-marketing.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/surveys.png b/vista_backend_theme/static/src/img/icons_green/surveys.png deleted file mode 100644 index 7fb1cd73..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/surveys.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/timeoff.png b/vista_backend_theme/static/src/img/icons_green/timeoff.png deleted file mode 100644 index 1295f82c..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/timeoff.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/timesheet.png b/vista_backend_theme/static/src/img/icons_green/timesheet.png deleted file mode 100644 index 3cfc4509..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/timesheet.png and /dev/null differ diff --git a/vista_backend_theme/static/src/img/icons_green/website.png b/vista_backend_theme/static/src/img/icons_green/website.png deleted file mode 100644 index d1bba818..00000000 Binary files a/vista_backend_theme/static/src/img/icons_green/website.png and /dev/null differ diff --git a/vista_backend_theme/static/src/js/chrome/sidebar.js b/vista_backend_theme/static/src/js/chrome/sidebar.js deleted file mode 100644 index 565f48c3..00000000 --- a/vista_backend_theme/static/src/js/chrome/sidebar.js +++ /dev/null @@ -1,44 +0,0 @@ -odoo.define('vista_backend_theme.SideBar', function (require) { - "use strict"; - var Widget = require('web.Widget'); - var SideBar = Widget.extend({ - events: _.extend({}, Widget.prototype.events, { - 'click .nav-link': '_onAppsMenuItemClicked', - }), - template: "vista_backend_theme.Sidebar", - - init: function (parent, menuData) { - this._super.apply(this, arguments); - this._apps = _.map(menuData.children, function (appMenuData) { - return { - actionID: parseInt(appMenuData.action.split(',')[1]), - menuID: appMenuData.id, - name: appMenuData.name, - xmlID: appMenuData.xmlid, - web_icon_data: appMenuData.web_icon_data, - }; - }); - }, - - getApps: function () { - return this._apps; - }, - - _openApp: function (app) { - this.trigger_up('app_clicked', { - action_id: app.actionID, - menu_id: app.menuID, - }); - }, - - _onAppsMenuItemClicked: function (ev) { - var $target = $(ev.currentTarget); - var actionID = $target.data('action-id'); - var menuID = $target.data('menu-id'); - var app = _.findWhere(this._apps, { actionID: actionID, menuID: menuID }); - this._openApp(app); - }, - }); - - return SideBar; -}); \ No newline at end of file diff --git a/vista_backend_theme/static/src/js/chrome/sidebar_menu.js b/vista_backend_theme/static/src/js/chrome/sidebar_menu.js deleted file mode 100644 index fc0f947b..00000000 --- a/vista_backend_theme/static/src/js/chrome/sidebar_menu.js +++ /dev/null @@ -1,107 +0,0 @@ -odoo.define('code_backend_theme.SidebarMenu', function (require) { - "use strict"; - - //sidebar toggle effect - $(document).on("click", "#closeSidebar", function(event){ - $("#closeSidebar").hide(); - $("#openSidebar").show(); - }); - $(document).on("click", "#openSidebar", function(event){ - $("#openSidebar").hide(); - $("#closeSidebar").show(); - }); - $(document).on("click", "#openSidebar", function(event){ - $("#sidebar_panel").css({'display':'block'}); - $(".o_action_manager").css({'margin-left': '90px','transition':'all .1s linear'}); - $(".top_heading").css({'margin-left': '70px','transition':'all .1s linear'}); - - //add class in navbar - var navbar = $(".o_main_navbar"); - var navbar_id = navbar.data("id"); - $("nav").addClass(navbar_id); - navbar.addClass("small_nav"); - - //add class in action-manager - var action_manager = $(".o_action_manager"); - var action_manager_id = action_manager.data("id"); - $("div").addClass(action_manager_id); - action_manager.addClass("sidebar_margin"); - - //add class in top_heading - var top_head = $(".top_heading"); - var top_head_id = top_head.data("id"); - $("div").addClass(top_head_id); - top_head.addClass("sidebar_margin"); - }); - $(document).on("click", "#closeSidebar", function(event){ - $("#sidebar_panel").css({'display':'none'}); - $(".o_action_manager").css({'margin-left': '0px'}); - $(".top_heading").css({'margin-left': '0px'}); - - //remove class in navbar - var navbar = $(".o_main_navbar"); - var navbar_id = navbar.data("id"); - $("nav").removeClass(navbar_id); - navbar.removeClass("small_nav"); - - //remove class in action-manager - var action_manager = $(".o_action_manager"); - var action_manager_id = action_manager.data("id"); - $("div").removeClass(action_manager_id); - action_manager.removeClass("sidebar_margin"); - - //remove class in top_heading - var top_head = $(".top_heading"); - var top_head_id = top_head.data("id"); - $("div").removeClass(top_head_id); - top_head.removeClass("sidebar_margin"); - }); - - $(document).on("click", ".sidebar a", function(event){ - var menu = $(".sidebar a"); - var $this = $(this); - var id = $this.data("id"); - $("header").removeClass().addClass(id); - menu.removeClass("active"); - $this.addClass("active"); - - //sidebar close on menu-item click - $("#sidebar_panel").css({'display':'none'}); - $(".o_action_manager").css({'margin-left': '0px'}); - $(".top_heading").css({'margin-left': '0px'}); - $("#closeSidebar").hide(); - $("#openSidebar").show(); - - //remove class in navbar - var navbar = $(".o_main_navbar"); - var navbar_id = navbar.data("id"); - $("nav").removeClass(navbar_id); - navbar.removeClass("small_nav"); - - //remove class in action-manager - var action_manager = $(".o_action_manager"); - var action_manager_id = action_manager.data("id"); - $("div").removeClass(action_manager_id); - action_manager.removeClass("sidebar_margin"); - - //remove class in top_heading - var top_head = $(".top_heading"); - var top_head_id = top_head.data("id"); - $("div").removeClass(top_head_id); - top_head.removeClass("sidebar_margin"); - }); -// //Custom -// var showBar = false; -// -// $(document).on("click", "#triggerSidebar", function(event){ -// -// if(showBar){ -// hideSidebar(); -// }else{ -// showSidebar(); -// } -// $("#triggerSidebar").toggleClass('c_sidebar_active c_sidebar_passive'); -// $('#dotsMenuContainer').toggleClass('c_dots_menu c_dots_menu_toggled'); -// showBar = !showBar; -// }); -}); \ No newline at end of file diff --git a/vista_backend_theme/static/src/js/load.js b/vista_backend_theme/static/src/js/load.js deleted file mode 100644 index 690337cb..00000000 --- a/vista_backend_theme/static/src/js/load.js +++ /dev/null @@ -1,14 +0,0 @@ -odoo.define('vista_backend_theme.Load', function (require) { - "use strict"; - - var rpc = require('web.rpc'); - var session = require('web.session'); - - $(document).ready(function () { - rpc.query({ - model: 'theme.data', - method: 'action_apply', - args: [this] - }); - }); -}); \ No newline at end of file diff --git a/vista_backend_theme/static/src/js/systray.js b/vista_backend_theme/static/src/js/systray.js deleted file mode 100644 index 1ddbf5cd..00000000 --- a/vista_backend_theme/static/src/js/systray.js +++ /dev/null @@ -1,30 +0,0 @@ -/** @odoo-module **/ - -import SystrayMenu from 'web.SystrayMenu'; -import Widget from 'web.Widget'; -import Session from 'web.session'; - - -var ThemeWidget = Widget.extend({ - template: 'theme_systray', - events: { - 'click #theme_vista': '_onClick', - }, - is_admin: false, - willStart: function () { - this.is_admin = Session.is_admin; - return this._super.apply(this, arguments); - }, - _onClick: function(){ - this.do_action({ - type: 'ir.actions.act_window', - name: 'theme data', - res_model: 'theme.data', - view_mode: 'form', - views: [[false, 'form']], - target: 'new' - }); - }, -}); -SystrayMenu.Items.push(ThemeWidget); -export default ThemeWidget; diff --git a/vista_backend_theme/static/src/js/web_window_title.js b/vista_backend_theme/static/src/js/web_window_title.js deleted file mode 100644 index f6fd3635..00000000 --- a/vista_backend_theme/static/src/js/web_window_title.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @odoo-module alias=web.window.title **/ - -import { WebClient } from "@web/webclient/webclient"; -import {patch} from "@web/core/utils/patch"; - -patch(WebClient.prototype, "Web Window Title", { - setup() { - const title = document.title; - this._super(); - this.title.setParts({ zopenerp: title }); - } -}); diff --git a/vista_backend_theme/static/src/scss/login.scss b/vista_backend_theme/static/src/scss/login.scss deleted file mode 100644 index c451adc5..00000000 --- a/vista_backend_theme/static/src/scss/login.scss +++ /dev/null @@ -1,72 +0,0 @@ -$one__light: #FFF !default; -$one__primary: #00005A !default; -$one__primary-dark: #274aa5 !important; -$one__border-light: #d4d4d4 !important; - -$transition-normal: all 0.4s linear !default; - - -.c_login_container{ - background: $one__light !important; - width: 100% !important; - - .card-body{ - background-color: transparent !important; - } -} -.input-group-prepend{ - .input-group-text{ - border-radius: 0px !important; - border-right: 0px !important; - background: transparent !important; - } -} - -.form-control{ - border-radius: 0px !important; - border-color: $one__border-light; - background-color: none; - - &:focus{ - box-shadow: none !important; - } -} - -//Buttons -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} - -//Links -a, .btn-link { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &:hover{ - color: $one__primary-dark; - text-decoration: none !important; - transition: $transition-normal; - } -} \ No newline at end of file diff --git a/vista_backend_theme/static/src/scss/login_black.scss b/vista_backend_theme/static/src/scss/login_black.scss deleted file mode 100644 index dcac31cf..00000000 --- a/vista_backend_theme/static/src/scss/login_black.scss +++ /dev/null @@ -1,72 +0,0 @@ -$one__light: #fff !default; -$one__primary: #1F2631 !default; -$one__primary-dark: #1c222c !important; -$one__border-light: #d4d4d4 !important; - -$transition-normal: all 0.4s linear !default; - - -.c_login_container{ - background: $one__light !important; - width: 100% !important; - - .card-body{ - background-color: transparent !important; - } -} -.input-group-prepend{ - .input-group-text{ - border-radius: 0px !important; - border-right: 0px !important; - background: transparent !important; - } -} - -.form-control{ - border-radius: 0px !important; - border-color: $one__border-light; - background-color: none; - - &:focus{ - box-shadow: none !important; - } -} - -//Buttons -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} - -//Links -a, .btn-link { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &:hover{ - color: $one__primary-dark; - text-decoration: none !important; - transition: $transition-normal; - } -} \ No newline at end of file diff --git a/vista_backend_theme/static/src/scss/login_green.scss b/vista_backend_theme/static/src/scss/login_green.scss deleted file mode 100644 index 781b85b5..00000000 --- a/vista_backend_theme/static/src/scss/login_green.scss +++ /dev/null @@ -1,71 +0,0 @@ -$one__light: #fff !default; -$one__primary: #00A97F !default; -$one__primary-dark: #009872 !important; -$one__border-light: #d4d4d4 !important; -$transition-normal: all 0.4s linear !default; - - -.c_login_container{ - background: $one__light !important; - width: 100% !important; - - .card-body{ - background-color: transparent !important; - } -} -.input-group-prepend{ - .input-group-text{ - border-radius: 0px !important; - border-right: 0px !important; - background: transparent !important; - } -} - -.form-control{ - border-radius: 0px !important; - border-color: $one__border-light; - background-color: none; - - &:focus{ - box-shadow: none !important; - } -} - -//Buttons -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} - -//Links -a, .btn-link { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &:hover{ - color: $one__primary-dark; - text-decoration: none !important; - transition: $transition-normal; - } -} \ No newline at end of file diff --git a/vista_backend_theme/static/src/scss/theme.scss b/vista_backend_theme/static/src/scss/theme.scss deleted file mode 100644 index 669de341..00000000 --- a/vista_backend_theme/static/src/scss/theme.scss +++ /dev/null @@ -1,1096 +0,0 @@ -//Variables - -$one__font: "Odoo Unicode Support Noto", "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; - -//Colors -$one__light: #FFF !default; -$one__primary: #00005A !default; -$one__sidebar-color-hover: #274aa5 !important; -$one__sidebar-border: #00005A !important; -$one__sidebar-color: #00005A !important; -$one__sidebar_text: #fff !default; -$one__primary-light: #ebf0fd !default; -$one__primary-dark: #274aa5 !important; -$one__light-font-primary: #1f2631 !important; -$one__light-font-secondary: #575757 !important; -$one__hover-bkg-light: #f5f5f5 !important; -$one__border-light: #d4d4d4 !important; -$one__info: #454555 !important; - -//Border Style -$one__border: 0px; -$one__button-padding: auto; -//Misc -$transition-normal: all 0.4s linear !default; -$transition-fast: all 0.2s linear !default; -//Paths -$dots_menu_toggled: url('/vista_backend_theme/static/src/img/icons/dots-menu-primary.png'); - - -//Misc -$transition-normal: all 0.4s linear !default; - -//Animations -@mixin c_fadeBackgroundOut($name, $s_opacity, $e_opacity, $r, $g, $b){ - @keyframes #{$name}{ - 0%{ - background-color: rgba($r, $g, $b, $s_opacity); - } - - 100%{ - background-color: rgba($r, $g, $b, $e_opacity); - } - } -} - - - -body{ - background-color: $one__light !important; - font-family: $one__font; -} -//NAVBAR -.o_main_navbar { - -webkit-box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - background-color: $one__light; - border-bottom: none; - -moz-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - -webkit-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - color: $one__light-font-primary; - //height: 60px !important; -} -@media (min-width: 768px) { - .o_menu_systray .o-dropdown.dropdown > .o-dropdown--menu { - top: 46px !important; - left: 85% !important; - right: 20px !important; - } -} - -.top_heading a.o_menu_brand{ - font-weight: bolder !important; -} - -.o_menu_systray > li{ - font-size: 1.5rem !important; - } - -.o_menu_systray > *{ - margin-right: 15px; - &:last-child{ - margin-right: 0px; - } - @media (max-width: 767.98px) { - margin-right: 0px !important; - &:last-child{ - margin-right: 0px; - } - } -} - -@media (max-width: 767.98px) { - .o_user_menu .o_user_avatar { - margin-right: 0px !important; - } -} - -li.o_MessagingMenu.o-is-open { - background-color: $one__hover-bkg-light; - border-bottom: none !important; -} -.o_mail_systray_item .o_notification_counter{ - background-color: $one__primary !important; - color: $one__light !important; -} -.o_MessagingMenu_counter { - margin-left: -12px !important; -} -.o_notification_counter{ - margin-left: -18px !important; -} -.o_NotificationGroup_date{ - color: $one__primary !important -} -.o_menu_sections > li > a, .o_main_navbar > li > label{ - color: $one__light-font-primary; - display: block !important; - &:hover{ - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; - } -} -.o_switch_company_menu > a{ - color: $one__light-font-primary; - font-size: 1.8rem !important -} -.oe_topbar_name{ - color: $one__light-font-primary; - - @media (max-width: 576px) { - display: none; - } -} -.o_main_navbar > a:hover, .o_main_navbar > a:focus, .o_main_navbar > button:hover, .o_main_navbar > button:focus { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} - -.o_MessagingMenu, .o_mail_systray_item{ - a{ - color: $one__light-font-primary; - } -} -.o_MessagingMenu_counter, .o_notification_counter { - background-color: $one__primary; - color: $one__light; -} -.o_main_navbar .show .dropdowdropdown-toggle, .o_main_navbar .show .dropdown-toggle { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} -.o_main_navbar .o_user_menu .oe_topbar_avatar { - height: 32px !important; - width: 32px !important; -} -.oe_topbar_name{ - color: $one__light-font-primary !important; -} -.o_dashboards .o_website_dashboard div.o_box h2, .o_dashboards .o_website_dashboard div.o_box h4 { - color: $one__primary !important; -} -.o_control_panel { - padding: 2.5rem 1rem !important; - //margin-bottom: 1.5rem !important; - border-bottom: 0.5px solid $one__border-light; - width: 98%; - margin-left: auto; - margin-right: auto; -} -.o_form_view .oe_button_box .oe_stat_button .o_button_icon { - color: $one__primary; -} -.o_control_panel .breadcrumb{ - background-color: none !important; - padding: auto !important -} -.o_control_panel .breadcrumb > li, .breadcrumb-item > a{ - font-size: 2rem !important; - color: $one__light-font-secondary; - max-width: 100% !important; -} -.o_control_panel > div{ - display: flex; - justify-content: space-between; -} - -.breadcrumb-item.active{ - $color: $one__light-font-primary; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::before { - border-left-color: $one__primary !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before { - border-left-color: none !important; -} -.o_statusbar_status > .o_arrow_button.btn-secondary{ - background-color: $one__light !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.disabled { - border-left: none !important; -} -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before, -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::after { -// background-color: $one__light !important; -// } - - - -.o_content{ - width: 98%; - margin-left: auto; - margin-right: auto; -} -.top_heading{ - display: flex; - align-items: center; - ul.o_menu_apps{ - list-style: none; - margin: 0 0.8rem 0 0; - padding: 0px; - } - li.dropdown{ - list-style: none; - } - a.o_menu_brand{ - color: $one__light-font-primary; - font-size: 1.5rem !important; - } -} -.o_menu_sections, .o_menu_systray{ - display: flex; - align-items: center; - list-style: none !important; - //height: 60px !important; - - li{ - margin-right: 1rem; - - &:last-child{ - margin-right: 0 !important; - } - } - .o-dropdown.dropdown > .o-dropdown--menu{ - border-color: transparent; - } -} -.o_main_navbar .dropdown .dropdown-toggle, -.o_main_navbar .o_menu_sections .dropdown .dropdown-toggle, -.o_nav_entry -{ - color: $one__light-font-primary; -} -.o_menu_systray, .o_menu_sections{ - li{ - position: relative !important; - a.o_MessagingMenu_toggler, a.dropdown-toggle{ - display: flex !important; - align-items: center !important; - height: 60px !important; - padding: 0px 7.5px; - - img{ - margin-right: 0.8rem; - transform: none !important; - } - } - } -} -.o_main_navbar .dropdown-menu.show { - min-width: auto !important; -} -.o_form_view .o_form_uri > span:first-child { - color: $one__primary; -} -.o_onboarding_container{ - margin-top: -1.575rem !important; -} -.o_loading_indicator.o_loading > span { - background: $one__primary !important; -} -.o_menu_systray > li > a > span.fa{ - color: $one__light-font-primary; - font-size: 1.9rem !important; - margin: auto 11px !important; -} - -//`Custom` -.c_navbar_container{ - display: flex; - justify-content: center; - width: 100%; - margin-left: auto; - margin-right: auto; - padding: 0 1rem 0 0 !important; -} - -.c_sidebar_active{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__primary; - color: $one__light !important; - margin-right: 1.5rem !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); - - &:hover{ - background-color: $one__primary-dark; - transition: $transition-normal; - } -} - -.c_sidebar_passive{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__light; - color: $one__primary !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); -} - -//END OF NAVBAR -.dropdown-menu{ - border-radius: 0px; - a, .dropdown-item{ - color: $one__light-font-primary; - &:hover{ - color: $one__primary !important; - background-color: $one__primary-light; - transition: $transition-normal; - } - } -} -//Buttons - -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} -.btn-secondary{ - background-color: $one__hover-bkg-light; - border-color: $one__hover-bkg-light; - color: $one__light-font-primary; - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(245,245,245, 1); - } - - -} -.btn-fill-info, .btn-info { - background-color: $one__info; - border-color: $one__info; - color: $one__light; -} -.btn-group, .o_filter_menu{ - button, div.btn-group{ - margin-right: 3px; - &:last-child{ - margin-right: 0px !important; - } - } -} -.btn-link{ - color: $one__primary !important; - - &:hover{ - background-color: $one__hover-bkg-light !important; - } -} - -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .o_dropdown_toggler_btn, -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .dropdown-toggle - { - margin-right: 0px !important; -} -.o_activity_view .o_record_selector, .o_stat_value { - color: $one__primary !important; -} - -.o_web_settings_invite{ - height: 26px !important; - margin-top: 6px !important; -} - -.o_NotificationList{ - div:hover { - background-color: $one__primary-light; - } -} -.o_MessagingMenu_tabButton, .o_MessagingMenu_newMessageButton{ - color: $one__primary; - opacity: 0.8; - .o-active{ - opacity: 1; - font-weight: bold; - } -} -.o_ThreadPreview_date, .o_activity_filter_button, .o_mail_activity_action{ - color: $one__primary !important; - - &:before{ - color: $one__light-font-primary; - } - &:hover{ - color: $one__primary-dark !important; - } -} -//Controls -.custom-control.custom-checkbox .custom-control-input:not(:checked):not(:indeterminate) ~ .custom-control-label::before { - background: none; - outline: 1px solid $one__hover-bkg-light; -} -.custom-checkbox .custom-control-label::before { - border-radius: 0px; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: $one__light; - border-color: $one__primary; - background-color: $one__primary; -} -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23FFFFFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} - -.o_input{ - border-radius: 0px !important; - border-color: $one__border-light; -} -.o_required_modifier.o_input, .o_required_modifier .o_input, .o_searchview .o_searchview_autocomplete li.o_selection_focus { - background-color: $one__primary-light !important; -} -.ui-menu-item > a{ - background-color: $one__light !important; - color: $one__primary !important; - &:hover, &:active, &:focus, &:focus-within, &:focus-visible, &:visited{ - color: $one__primary !important; - background-color: $one__primary-light !important; - } -} -.nav-tabs .nav-link { - border-radius: 0px !important; - border-top: 3px solid transparent !important; -} -.nav-tabs .nav-link.active { - border-top: 3px solid $one__primary !important; -} -.nav-tabs .nav-link:hover{ - border-top: 3px solid $one__primary !important; - color: $one__primary-dark; - transition: transition-normal !important; -} -.o_form_view .o_horizontal_separator { - color: $one__primary; -} -.panel-heading.note-toolbar { - background-color: $one__light !important; -} -div.o_boolean_toggle.custom-control.custom-checkbox > input.custom-control-input:checked + label.custom-control-label::before { - background-color: $one__primary !important; -} -//Misc. -.badge-primary{ - background-color: $one__primary; - border-radius: 0px; - padding: 5px; -} -//Links -a { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &hover{ - color: $one__primary-dark; - text-decoration: none; - transition: $transition-normal; - } -} -a.o_menu_brand{ - color: $one__light-font-primary; - font-weight: bold; -} -.o_form_uri{ - color: $one__primary !important; -} -.o_Message_prettyBody > div > p > a { - background-color: $one__primary !important; -} - -.o_onboarding_step_title > a { - color: $one__light; -} -.oe_kanban_action_a{ - color: $one__light-font-primary; -} -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus-within, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus-within{ - outline: thin solid $one__primary-light !important; -} -//Tables -.o_list_view thead { - background-color: $one__hover-bkg-light; -} - -.o_list_view .o_list_table thead { - color: $one__light-font-secondary; - border-bottom: 1px solid $one__border-light; -} -.o_list_view .o_list_table thead > tr > th:not(.o_list_record_selector) { - border-left: none; -} -table thead th { - vertical-align: bottom; - border-top: none !important; - border-bottom: none !important; - padding: 0.5rem !important; -} -table-sm th, .table-sm td { - padding: 0.5rem !important; - border-top: none !important; -} -tr:nth-child(even){ - background-color: $one__hover-bkg-light; -} -.o_list_view .o_list_table tfoot { - background-color: $one__light; - filter: brightness(95.5%) !important; -} - -//Search -.o_searchview .o_searchview_facet, .o_setting_search { - background: $one__light; - border-radius: 0px !important; - border: 1px solid $one__border-light; - color: $one__light-font-secondary; -} -.o_searchview .o_searchview_facet .o_searchview_facet_label { - background-color: $one__light; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label { - color: $one__light-font-secondary; - margin: 0px -3px 3px 3px; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_remove{ - bottom: 3px !important; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_values { - padding: 2px 18px 0 5px !important; -} -.o_searchview{ - padding: 0.5rem !important; - border-radius: 0px; -} -.searchInput{ - border: none !important; -} -.searchIcon{ - margin: 5px 10px 0 0; -} -.o_setting_search { - padding: 5px; -} - -//Kanban -.oe_kanban_card{ - border-color: $one__border-light; - padding: 1rem !important; -} - -//Calendar -@include c_fadeBackgroundOut('fadeCalendarRow', 1, 0.6, 212, 212, 212 ); - -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day.ui-datepicker-today a, -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day a, -.o_calendar_view .o_calendar_widget .fc-dayGridMonth-view .fc-content-skeleton .fc-today .fc-day-number -{ - color: $one__light !important; - background-color: $one__primary !important; -} - -.o_calendar_sidebar_container .ui-datepicker td a{ - color: $one__light-font-secondary; -} -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-today a{ - background-color: $one__border-light; -} - -.o_calendar_sidebar_container .ui-datepicker .o_selected_range.o_color:not(.ui-datepicker-unselectable) { - animation: fadeCalendarRow 2s forwards; -} - -.fc-now-indicator { - border-color: $one__primary !important; -} -.fc-ltr .fc-time-grid .fc-now-indicator-arrow { - left: 0; - border-width: 5px 0 5px 6px; - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} - -.o_calendar_view .fc-view .fc-event.o_calendar_color_1.o_cw_custom_highlight { - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - color: $one__primary; - font-weight: bold; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 .fc-bg { - background-color: $one__primary-light; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 { - border-color: $one__primary; - color: #274aa5; - opacity: 0.8; - - &:hover{ - background: $one__primary-light; - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - } -} - -.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover { - background-color: $one__primary !important; -} - -//Dashboard Sidebar -.o_Discuss, .o_setting_container{ - width: 98%; - margin-right: auto; - margin-left: auto; - border-top: none; -} -.o_widget_Discuss .o_Discuss_content { - border-top: none !important; -} -.o_DiscussSidebar, .settings_tab{ - color: $one__light-font-primary; - background-color: transparent !important; - border-right: 2px solid $one__border-light; - height: 95%; - margin-top: auto; - margin-bottom: auto; -} -.o_DiscussSidebarItem{ - padding: 0.4rem 0 !important; -} -.o_DiscussSidebarItem_activeIndicator.o-item-active{ - width: 0; - height: 0; - background: transparent; - margin-top: 0.375rem; - margin-right: 8px !important; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; -} -.o_DiscussSidebarItem:hover{ - background-color: transparent !important; - color: $one__primary; -} -.o_DiscussSidebar_separator{ - width: 95% !important; - margin-left: auto; - margin-right: auto; - background-color: transparent !important; -} -.o_MessageList{ - padding: 10px !important; -} - -.o_Message.o-not-discussion{ - background-color: $one__hover-bkg-light; - border-color: $one__border-light; -} - -//Settings - -.o_setting_container .settings_tab { - .app_name{ - color: $one__light-font-primary !important; - } -} - -.o_base_settings .o_control_panel .o_panel .o_setting_search .searchInput { - max-width: none !important; - margin: 4px 0 0 10px !important; -} - -.o_setting_container .settings_tab .tab{ - height: 30px !important; -} - -.o_setting_container .settings{ - padding: 10px !important; -} -.o_setting_container .settings_tab .app_name { - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } -} -.o_setting_container .settings_tab .selected{ - background: transparent !important; - box-shadow: none !important; - position: relative; - - &:before{ - content: ""; - position: absolute; - width: 0; - height: 0; - top: 24%; - left: 0; - background: transparent; - margin-top: 0.375rem; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; - } - - .app_name{ - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } - } -} - -.o_form_image_controls > .o_select_file_button{ - background: $one__primary !important; - color: $one__light; -} - -.o_search_panel .o_search_panel_category .o_search_panel_section_icon { - color: $one__primary; -} -.o_search_panel .list-group-item header.active { - background-color: $one__primary-light; - color: $one__primary; -} - -//Chat -.o_ChatWindowHeader{ - background-color: $one__primary !important; - color: $one__light !important; - border-radius: 0px !important; -} -//Tables -.o_purchase_dashboard .table > thead > tr > td.o_main, .o_purchase_dashboard .table tbody > tr > td.o_main { - background-color: $one__primary; - - &:hover{ - background-color: $one__primary-dark; - } - - a{ - color: $one__light; - } -} - -//Tags -.o_field_widget.o_field_many2manytags .o_tag_color_5, -.o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag.o_tag_color_5 span, -.o_kanban_view .o_kanban_record .o_kanban_tags .o_tag.o_tag_color_5 span { - background-color: $one__primary; -} - -.badge-pill{ - a{ - color: $one__light; - } -} - - -.oe_kanban_card .o_kanban_tags .o_tag, .o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag, .o_kanban_view .o_kanban_record .o_kanban_tags .o_tag { - background-color: transparent !important; -} - -.o-menu-toggle{ - display: none !important; -} -.c_dots_menu{ - background-image: url('/vista_backend_theme/static/src/img/icons/dots-menu.png'); - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} -.c_dots_menu_toggled{ - background-image: $dots_menu_toggled; - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} - -//Responsive Layout -@media (max-width: 767.98px) { - //Settings - .o_base_settings .o_setting_container { - flex-flow: column nowrap; - - .settings_tab{ - flex-direction: row; - height: 40px; - margin-top: -5px; - justify-content: center; - } - } - //App Bar - .o_control_panel > div { - flex-direction: column; - margin-bottom: 0.5rem; - } - .o_control_panel .breadcrumb > li, .breadcrumb-item > a { - font-size: 1.8rem !important; - margin-bottom: 0.5rem; - } - .o_control_panel .o_cp_top_right { - width: 100%; - margin-bottom: 0.5rem; - } - .o_search_panel .o_search_panel_section_header { - display: none; - } - .o_search_panel { - flex: 0 0 120px !important; - padding: 8px 8px 32px 0px !important; - } - //Discuss - .o_Discuss.o-mobile{ - width: 100% !important; - border-top: 1px solid $one__border-light; - } - .o_MobileMessagingNavbar_tab.o-active > span{ - color: $one__primary !important; - } -} - -#sidebar_panel { - height: 100%; - position: fixed; - top: 0px; - background-color: $one__sidebar-color; - border-right: 1px solid $one__sidebar_border; - display: none; - width: 80px; - overflow-y: scroll; - -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */ - scrollbar-width: none; /* Hide scrollbar for Firefox */ - z-index: 999; -} -.sidebar_app_name{ - display: none; -} -#sidebar_panel::-webkit-scrollbar { - display: none; /* Hide scrollbar for Chrome, Safari and Opera */ -} -.sidebar_menu{ - margin-top: 20px !important; -} -.sidebar > h6{ - color: $one__light; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 2px; - font-size: 0.9rem; - margin-left: auto; - margin-right: auto; - width: 38px; - display: block; - margin-top: 18px !important; -} -.sidebar_panel .sidebar { - padding: 0; - white-space: nowrap; - padding-bottom: 20px; - padding-top: 5px; -} -.sidebar_panel .sidebar_close { - text-align: end; - display: none; - position: sticky; - height: 35px; - padding-top: 5px; - top: 0; - background: #2a3042; - z-index: 1; -} -.sidebar_panel .sidebar_close a#closeSidebar { - font-size: 18px; - margin-right: 10px; - color: #ffffff; - opacity: .3; -} -.sidebar_panel .sidebar_close a#closeSidebar img { - width: 15px; -} -.sidebar_panel .sidebar .sidebar_logo { - padding-top: 20px; - text-align: center; - padding-bottom: 20px; -} -.sidebar_panel .sidebar .sidebar_logo img { - max-width: 150px; -} - -.sidebar_panel .sidebar .sidebar_head { - padding-top: 20px; - padding-left: none; - color: $one__light; -} - -.sidebar_panel .sidebar .sidebar_menu { - list-style: none; - margin: 0; - padding: 0; -} - -.sidebar_panel .sidebar .sidebar_menu li { - margin: 0; - padding: 0; - border: 0px; - display: block; -} - -.sidebar_panel .sidebar .sidebar_menu li a { - margin: 0; - border: 0px; - display: block; - cursor: pointer; - overflow: hidden; - padding: 8px 10px 8px 25px; - color: #ffffff; - font-size: 13px; - transition:.3s all; -} -.sidebar_panel .sidebar .sidebar_menu li:hover a { - background: $one__sidebar-color-hover; - color: $one__light; -} - -.sidebar_panel .nav-link { - opacity: 1 !important; - transition:.3s all; -} -.sidebar_panel .sidebar a.nav-link.active { - color: $one__light !important; - border-left: 4px solid $one__light; - - img{ - margin-left: -0.5rem !important; - } -} - -.sidebar_panel .sidebar .sidebar_menu li a .sidebar_img { - width: 32px; - height: 32px; - margin: 8px 8px 8px 0; -} -.sidebar_menu > li a.nav-link{ - &:hover{ - transform: scale(1.05) !important; - transition: all 0.3s linear !important; - } -} - -.datepicker{ - z-index: 9999 !important; -} -div.dropdown-menu.bootstrap-datetimepicker-widget { - width: 28rem !important; -} -// .datepicker .table-sm > thead, -// .datepicker > div > table > tbody > tr > td.active{ -// background-color: $one__primary; -// } -// .datepicker .table-sm > thead > tr:first-child th:hover { -// background-color: $one__primary-dark; -// } -// .datepicker .table-sm > tbody > tr > td.today::before{ -// border-bottom-color: $one__primary; -// } - - -// here is van add - -.o_calendar_renderer .o_calendar_widget .fc-timeGridDay-view .fc-axis.fc-time span, -.o_calendar_renderer .o_calendar_widget .fc-timeGridWeek-view .fc-axis.fc-time span { - max-width: 45px; - margin-top: 0px !important; - position: relative; - display: block; -} - -.o_searchview .o_searchview_icon { - z-index: 9999 !important; - margin-top: 12px; -} - - -// 自定义的下拉 -.o_menu_sections_fix{ - display: flex!important; - align-items: center; -} -.custom_dropdown { - position: relative; - .title { - color: #1f2631; - padding: 0 12px; - line-height: var(--o-navbar-height); - margin: 0; - cursor: pointer; - display: block; - } - .custom_dropdown_fixed { - position: absolute; - top: var(--o-navbar-height); - z-index: 1000; - padding: 0.5rem 0; - margin: 0; - font-size: 1.08333333rem; - color: #495057; - text-align: left; - background-color: #FFFFFF; - box-shadow: 0 1rem 1.1rem rgba(0, 0, 0, 0.1); - border-radius: 0.25rem; - display: none; - a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: 400; - color: #495057; - text-align: inherit; - white-space: nowrap; - background-color: transparent; - border: 0; - &:hover { - color: #00005A !important; - background-color: #ebf0fd; - transition: all 0.3s linear; - } - } - } - .subtitle { - margin: 5px 0 0px; - padding: 5px 0; - text-indent: 5px; - background: rgba(0, 0, 0, 0.1); - font-size: 14px; - } - &:hover { - .title { - background-color: rgba(0, 0, 0, 0.08); - transition: all .3s; - } - .custom_dropdown_fixed{ - display: block; - } - } -} \ No newline at end of file diff --git a/vista_backend_theme/static/src/scss/theme_black.scss b/vista_backend_theme/static/src/scss/theme_black.scss deleted file mode 100644 index 870202dc..00000000 --- a/vista_backend_theme/static/src/scss/theme_black.scss +++ /dev/null @@ -1,1188 +0,0 @@ -//Font CSS -/* cyrillic-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 300; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofAnsSUbOvISTs.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 300; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofAnsSUZevISTs.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* vietnamese */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 300; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofAnsSUbuvISTs.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 300; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofAnsSUb-vISTs.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 300; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofAnsSUYevI.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXV3I6Li01BKofIOOaBXso.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXV3I6Li01BKofIMeaBXso.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* vietnamese */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXV3I6Li01BKofIOuaBXso.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXV3I6Li01BKofIO-aBXso.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXV3I6Li01BKofINeaB.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofA6sKUbOvISTs.woff2) format('woff2'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofA6sKUZevISTs.woff2) format('woff2'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* vietnamese */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofA6sKUbuvISTs.woff2) format('woff2'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; -} -/* latin-ext */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofA6sKUb-vISTs.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Nunito'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/nunito/v16/XRXW3I6Li01BKofA6sKUYevI.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - - -//Variables - -//Fonts -$one__font: 'Nunito', Helvetica, Verdana, Arial, sans-serif !important; - -//Colors -$one__light: #fff !default; -$one__primary: #1F2631 !default; -$one__sidebar-color: #1F2631 !important; -$one__sidebar-color-hover: #1c222c !default; -$one__sidebar-border: #1F2631 !important; -$one__sidebar_text: #fff !default; -$one__primary-light: #e9e9ea !default; -$one__primary-dark: #1c222c !important; -$one__light-font-primary: #030405 !important; -$one__light-font-secondary: #575757 !important; -$one__hover-bkg-light: #f5f5f5 !important; -$one__border-light: #d4d4d4 !important; -$one__info: #454555 !important; - -//Border Style -$one__border: 100px; -$one__button-padding: 25px; -//Misc -$transition-normal: all 0.4s linear !default; -$transition-fast: all 0.2s linear !default; - -//Paths -$dots_menu_toggled: url('/vista_backend_theme/static/src/img/icons/dots-menu-navy.png'); - - -//Misc -$transition-normal: all 0.4s linear !default; - -//Animations -@mixin c_fadeBackgroundOut($name, $s_opacity, $e_opacity, $r, $g, $b){ - @keyframes #{$name}{ - 0%{ - background-color: rgba($r, $g, $b, $s_opacity); - } - - 100%{ - background-color: rgba($r, $g, $b, $e_opacity); - } - } -} - - - -body{ - background-color: $one__light !important; - font-family: $one__font; -} -//NAVBAR -.o_main_navbar { - -webkit-box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - background-color: $one__light; - border-bottom: none; - -moz-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - -webkit-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - color: $one__light-font-primary; - //height: 60px !important; -} -@media (min-width: 768px) { - .o_menu_systray .o-dropdown.dropdown > .o-dropdown--menu { - top: 46px !important; - left: 85% !important; - right: 20px !important; - } -} -.top_heading a.o_menu_brand{ - font-weight: bolder !important; -} - -.o_menu_systray > li{ - font-size: 1.5rem !important; - } - -.o_menu_systray > *{ - margin-right: 15px; - &:last-child{ - margin-right: 0px; - } - @media (max-width: 767.98px) { - margin-right: 0px !important; - &:last-child{ - margin-right: 0px; - } - } -} - -@media (max-width: 767.98px) { - .o_user_menu .o_user_avatar { - margin-right: 0px !important; - } -} - -li.o_MessagingMenu.o-is-open { - background-color: $one__hover-bkg-light; - border-bottom: none !important; -} -.o_mail_systray_item .o_notification_counter{ - background-color: $one__primary !important; - color: $one__light !important; -} -.o_MessagingMenu_counter { - margin-left: -12px !important; -} -.o_notification_counter{ - margin-left: -18px !important; -} -.o_NotificationGroup_date{ - color: $one__primary !important -} -.o_menu_sections > li > a, .o_main_navbar > li > label{ - color: $one__light-font-primary; - display: block !important; - &:hover{ - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; - } -} -.o_switch_company_menu > a{ - color: $one__light-font-primary; - font-size: 1.8rem !important -} -.oe_topbar_name{ - color: $one__light-font-primary; - - @media (max-width: 576px) { - display: none; - } -} -.o_main_navbar > a:hover, .o_main_navbar > a:focus, .o_main_navbar > button:hover, .o_main_navbar > button:focus { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} - -.o_MessagingMenu, .o_mail_systray_item{ - a{ - color: $one__light-font-primary; - } -} -.o_MessagingMenu_counter, .o_notification_counter { - background-color: $one__primary; - color: $one__light; -} -.o_main_navbar .show .dropdowdropdown-toggle, .o_main_navbar .show .dropdown-toggle { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} -.o_main_navbar .o_user_menu .oe_topbar_avatar { - height: 32px !important; - width: 32px !important; -} -.oe_topbar_name{ - color: $one__light-font-primary !important; -} -.o_dashboards .o_website_dashboard div.o_box h2, .o_dashboards .o_website_dashboard div.o_box h4 { - color: $one__primary !important; -} -.o_control_panel { - padding: 2.5rem 1rem !important; - margin-bottom: 1.5rem !important; - border-bottom: 1px solid $one__border-light; - width: 98%; - margin-left: auto; - margin-right: auto; -} -.o_form_view .oe_button_box .oe_stat_button .o_button_icon { - color: $one__primary; -} -.o_control_panel .breadcrumb{ - background-color: none !important; - padding: auto !important -} -.o_control_panel .breadcrumb > li, .breadcrumb-item > a{ - font-size: 2rem !important; - color: $one__light-font-secondary; - max-width: 100% !important; -} -.o_control_panel > div{ - display: flex; - justify-content: space-between; -} - -.breadcrumb-item.active{ - $color: $one__light-font-primary; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::before { - border-left-color: $one__primary !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before { - border-left-color: none !important; -} -.o_statusbar_status > .o_arrow_button.btn-secondary{ - background-color: $one__light !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.disabled { - border-left: none !important; -} -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before, -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::after { -// background-color: $one__light !important; -// } - - - -.o_content{ - width: 98%; - margin-left: auto; - margin-right: auto; -} -.top_heading{ - display: flex; - align-items: center; - ul.o_menu_apps{ - list-style: none; - margin: 0 0.8rem 0 0; - padding: 0px; - } - li.dropdown{ - list-style: none; - } - a.o_menu_brand{ - color: $one__light-font-primary; - font-size: 1.5rem !important; - } -} -.o_menu_sections, .o_menu_systray{ - display: flex; - align-items: center; - list-style: none !important; - //height: 60px !important; - - li{ - margin-right: 1rem; - - &:last-child{ - margin-right: 0 !important; - } - } - .o-dropdown.dropdown > .o-dropdown--menu{ - border-color: transparent; - } -} -.o_main_navbar .dropdown .dropdown-toggle, -.o_main_navbar .o_menu_sections .dropdown .dropdown-toggle, -.o_nav_entry -{ - color: $one__light-font-primary; -} -.o_menu_systray, .o_menu_sections{ - li{ - position: relative !important; - a.o_MessagingMenu_toggler, a.dropdown-toggle{ - display: flex !important; - align-items: center !important; - height: 60px !important; - padding: 0px 7.5px; - - img{ - margin-right: 0.8rem; - transform: none !important; - } - } - } -} -.o_main_navbar .dropdown-menu.show { - min-width: auto !important; -} -.o_form_view .o_form_uri > span:first-child { - color: $one__primary; -} -.o_onboarding_container{ - margin-top: -1.575rem !important; -} -.o_loading_indicator.o_loading > span { - background: $one__primary !important; -} -.o_menu_systray > li > a > span.fa{ - color: $one__light-font-primary; - font-size: 1.9rem !important; - margin: auto 11px !important; -} - -//`Custom` -.c_navbar_container{ - display: flex; - justify-content: center; - width: 100%; - margin-left: auto; - margin-right: auto; - padding: 0 1rem 0 0 !important; -} - -.c_sidebar_active{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__primary; - color: $one__light !important; - margin-right: 1.5rem !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); - - &:hover{ - background-color: $one__primary-dark; - transition: $transition-normal; - } -} - -.c_sidebar_passive{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__light; - color: $one__primary !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); -} - -//END OF NAVBAR -.dropdown-menu{ - border-radius: 0px; - a, .dropdown-item{ - color: $one__light-font-primary; - &:hover{ - color: $one__primary !important; - background-color: $one__primary-light; - transition: $transition-normal; - } - } -} -//Buttons - -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} -.btn-secondary{ - background-color: $one__hover-bkg-light; - border-color: $one__hover-bkg-light; - color: $one__light-font-primary; - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(245,245,245, 1); - } - - -} -.btn-fill-info, .btn-info { - background-color: $one__info; - border-color: $one__info; - color: $one__light; -} -.btn-group, .o_filter_menu{ - button, div.btn-group{ - margin-right: 3px; - &:last-child{ - margin-right: 0px !important; - } - } -} -.btn-link{ - color: $one__primary !important; - - &:hover{ - background-color: $one__hover-bkg-light !important; - } -} - -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .o_dropdown_toggler_btn, -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .dropdown-toggle - { - margin-right: 0px !important; -} -.o_activity_view .o_record_selector, .o_stat_value { - color: $one__primary !important; -} - -.o_web_settings_invite{ - height: 26px !important; - margin-top: 6px !important; -} - -.o_NotificationList{ - div:hover { - background-color: $one__primary-light; - } -} -.o_MessagingMenu_tabButton, .o_MessagingMenu_newMessageButton{ - color: $one__primary; - opacity: 0.8; - .o-active{ - opacity: 1; - font-weight: bold; - } -} -.o_ThreadPreview_date, .o_activity_filter_button, .o_mail_activity_action{ - color: $one__primary !important; - - &:before{ - color: $one__light-font-primary; - } - &:hover{ - color: $one__primary-dark !important; - } -} -//Controls -.custom-control.custom-checkbox .custom-control-input:not(:checked):not(:indeterminate) ~ .custom-control-label::before { - background: none; - outline: 1px solid $one__hover-bkg-light; -} -.custom-checkbox .custom-control-label::before { - border-radius: 0px; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: $one__light; - border-color: $one__primary; - background-color: $one__primary; -} -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23FFFFFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} - -.o_input{ - border-radius: 0px !important; - border-color: $one__border-light; -} -.o_required_modifier.o_input, .o_required_modifier .o_input, .o_searchview .o_searchview_autocomplete li.o_selection_focus { - background-color: $one__primary-light !important; -} -.ui-menu-item > a{ - background-color: $one__light !important; - color: $one__primary !important; - &:hover, &:active, &:focus, &:focus-within, &:focus-visible, &:visited{ - color: $one__primary !important; - background-color: $one__primary-light !important; - } -} -.nav-tabs .nav-link { - border-radius: 0px !important; - border-top: 3px solid transparent !important; -} -.nav-tabs .nav-link.active { - border-top: 3px solid $one__primary !important; -} -.nav-tabs .nav-link:hover{ - border-top: 3px solid $one__primary !important; - color: $one__primary-dark; - transition: transition-normal !important; -} -.o_form_view .o_horizontal_separator { - color: $one__primary; -} -.panel-heading.note-toolbar { - background-color: $one__light !important; -} -div.o_boolean_toggle.custom-control.custom-checkbox > input.custom-control-input:checked + label.custom-control-label::before { - background-color: $one__primary !important; -} -//Misc. -.badge-primary{ - background-color: $one__primary; - border-radius: 0px; - padding: 5px; -} -//Links -a { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &hover{ - color: $one__primary-dark; - text-decoration: none; - transition: $transition-normal; - } -} -a.o_menu_brand{ - color: $one__light-font-primary; - font-weight: bold; -} -.o_form_uri{ - color: $one__primary !important; -} -.o_Message_prettyBody > div > p > a { - background-color: $one__primary !important; -} - -.o_onboarding_step_title > a { - color: $one__light; -} -.oe_kanban_action_a{ - color: $one__light-font-primary; -} -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus-within, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus-within{ - outline: thin solid $one__primary-light !important; -} -//Tables -.o_list_view thead { - background-color: $one__hover-bkg-light; -} - -.o_list_view .o_list_table thead { - color: $one__light-font-secondary; - border-bottom: 1px solid $one__border-light; -} -.o_list_view .o_list_table thead > tr > th:not(.o_list_record_selector) { - border-left: none; -} -table thead th { - vertical-align: bottom; - border-top: none !important; - border-bottom: none !important; - padding: 1rem !important; -} -table-sm th, .table-sm td { - padding: 1rem !important; - border-top: none !important; -} -tr:nth-child(even){ - background-color: $one__hover-bkg-light; -} -.o_list_view .o_list_table tfoot { - background-color: $one__light; - filter: brightness(95.5%) !important; -} - -//Search -.o_searchview .o_searchview_facet, .o_setting_search { - background: $one__light; - border-radius: 0px !important; - border: 1px solid $one__border-light; - color: $one__light-font-secondary; -} -.o_searchview .o_searchview_facet .o_searchview_facet_label { - background-color: $one__light; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label { - color: $one__light-font-secondary; - margin: 0px -3px 3px 3px; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_remove{ - bottom: 3px !important; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_values { - padding: 2px 18px 0 5px !important; -} -.o_searchview{ - padding: 0.5rem !important; - border-radius: 0px; -} -.searchInput{ - border: none !important; -} -.searchIcon{ - margin: 5px 10px 0 0; -} -.o_setting_search { - padding: 5px; - border-radius: $one__border !important; -} - -//Kanban -.oe_kanban_card{ - border-color: $one__border-light; - padding: 1rem !important; -} - -//Calendar -@include c_fadeBackgroundOut('fadeCalendarRow', 1, 0.6, 212, 212, 212 ); - -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day.ui-datepicker-today a, -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day a, -.o_calendar_view .o_calendar_widget .fc-dayGridMonth-view .fc-content-skeleton .fc-today .fc-day-number -{ - color: $one__light !important; - background-color: $one__primary !important; -} - -.o_calendar_sidebar_container .ui-datepicker td a{ - color: $one__light-font-secondary; -} -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-today a{ - background-color: $one__border-light; -} - -.o_calendar_sidebar_container .ui-datepicker .o_selected_range.o_color:not(.ui-datepicker-unselectable) { - animation: fadeCalendarRow 2s forwards; -} - -.fc-now-indicator { - border-color: $one__primary !important; -} -.fc-ltr .fc-time-grid .fc-now-indicator-arrow { - left: 0; - border-width: 5px 0 5px 6px; - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} - -.o_calendar_view .fc-view .fc-event.o_calendar_color_1.o_cw_custom_highlight { - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - color: $one__primary; - font-weight: bold; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 .fc-bg { - background-color: $one__primary-light; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 { - border-color: $one__primary; - color: #274aa5; - opacity: 0.8; - - &:hover{ - background: $one__primary-light; - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - } -} - -.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover { - background-color: $one__primary !important; -} - -//Dashboard Sidebar -.o_Discuss, .o_setting_container{ - width: 98%; - margin-right: auto; - margin-left: auto; - border-top: none; -} -.o_widget_Discuss .o_Discuss_content { - border-top: none !important; -} -.o_DiscussSidebar, .settings_tab{ - color: $one__light-font-primary; - background-color: transparent !important; - border-right: 2px solid $one__border-light; - height: 95%; - margin-top: auto; - margin-bottom: auto; -} -.o_DiscussSidebarItem{ - padding: 0.4rem 0 !important; -} -.o_DiscussSidebarItem_activeIndicator.o-item-active{ - width: 0; - height: 0; - background: transparent; - margin-top: 0.375rem; - margin-right: 8px !important; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; -} -.o_DiscussSidebarItem:hover{ - background-color: transparent !important; - color: $one__primary; -} -.o_DiscussSidebar_separator{ - width: 95% !important; - margin-left: auto; - margin-right: auto; - background-color: transparent !important; -} -.o_MessageList{ - padding: 10px !important; -} - -.o_Message.o-not-discussion{ - background-color: $one__hover-bkg-light; - border-color: $one__border-light; -} - -//Settings - -.o_setting_container .settings_tab { - .app_name{ - color: $one__light-font-primary !important; - } -} - -.o_base_settings .o_control_panel .o_panel .o_setting_search .searchInput { - max-width: none !important; - margin: 4px 0 0 10px !important; -} - -.o_setting_container .settings_tab .tab{ - height: 30px !important; -} - -.o_setting_container .settings{ - padding: 10px !important; -} -.o_setting_container .settings_tab .app_name { - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } -} -.o_setting_container .settings_tab .selected{ - background: transparent !important; - box-shadow: none !important; - position: relative; - - &:before{ - content: ""; - position: absolute; - width: 0; - height: 0; - top: 24%; - left: 0; - background: transparent; - margin-top: 0.375rem; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; - } - - .app_name{ - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } - } -} - -.o_form_image_controls > .o_select_file_button{ - background: $one__primary !important; - color: $one__light; -} - -.o_search_panel .o_search_panel_category .o_search_panel_section_icon { - color: $one__primary; -} -.o_search_panel .list-group-item header.active { - background-color: $one__primary-light; - color: $one__primary; -} - -//Chat -.o_ChatWindowHeader{ - background-color: $one__primary !important; - color: $one__light !important; - border-radius: 0px !important; -} -//Tables -.o_purchase_dashboard .table > thead > tr > td.o_main, .o_purchase_dashboard .table tbody > tr > td.o_main { - background-color: $one__primary; - - &:hover{ - background-color: $one__primary-dark; - } - - a{ - color: $one__light; - } -} - -//Tags -.o_field_widget.o_field_many2manytags .o_tag_color_5, -.o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag.o_tag_color_5 span, -.o_kanban_view .o_kanban_record .o_kanban_tags .o_tag.o_tag_color_5 span { - background-color: $one__primary; -} - -.badge-pill{ - a{ - color: $one__light; - } -} - - -.o_enterprise_label -{ - border-radius: $one__border; - padding: 5px 10px 4px !important; -} - -.oe_kanban_card .o_kanban_tags .o_tag, .o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag, .o_kanban_view .o_kanban_record .o_kanban_tags .o_tag { - background-color: transparent !important; -} - -.o-menu-toggle{ - display: none !important; -} -.c_dots_menu{ - background-image: url('/vista_backend_theme/static/src/img/icons/dots-menu.png'); - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} -.c_dots_menu_toggled{ - background-image: $dots_menu_toggled; - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} - -//Responsive Layout -@media (max-width: 767.98px) { - //Settings - .o_base_settings .o_setting_container { - flex-flow: column nowrap; - - .settings_tab{ - flex-direction: row; - height: 40px; - margin-top: -5px; - justify-content: center; - } - } - //App Bar - .o_control_panel > div { - flex-direction: column; - margin-bottom: 0.5rem; - } - .o_control_panel .breadcrumb > li, .breadcrumb-item > a { - font-size: 1.8rem !important; - margin-bottom: 0.5rem; - } - .o_control_panel .o_cp_top_right { - width: 100%; - margin-bottom: 0.5rem; - } - .o_search_panel .o_search_panel_section_header { - display: none; - } - .o_search_panel { - flex: 0 0 120px !important; - padding: 8px 8px 32px 0px !important; - } - //Discuss - .o_Discuss.o-mobile{ - width: 100% !important; - border-top: 1px solid $one__border-light; - } - .o_MobileMessagingNavbar_tab.o-active > span{ - color: $one__primary !important; - } -} - -//Border Radius -.o_form_button, -.custom-checkbox .custom-control-label::before, -.o_searchview, -.o_searchview .o_searchview_facet, -.o-dropdown--menu > div > button, -.oe_title > div > a -{ - border-radius: $one__border !important; -} -.o_arrow_button{ - border-radius: 0px !important; -} -.dropdown-menu{ - border-radius: 5px !important; -} -input[type='text'], select{ - border-radius: $one__border !important; -} -//Rounded Buttons -.o_form_button_edit, -.o_form_button_create, -.o-kanban-button-new, -.o_button_upload_bill, -.o_DiscussSidebar_startAMeetingButton, -.oe_kanban_action_button, -.o_web_settings_invite, -.oe_module_action > a, -.o_list_buttons > button, -footer > button, -.o_statusbar_buttons > button -{ - border-radius: $one__border !important; - padding: 5px $one__button-padding 3px !important; - margin-right: 5px !important; -} - -#sidebar_panel { - height: 100%; - position: fixed; - top: 0px; - background-color: $one__sidebar-color; - display: none; - width: 80px; - overflow-y: scroll; - -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */ - scrollbar-width: none; /* Hide scrollbar for Firefox */ - z-index: 999; -} -.sidebar_app_name{ - display: none; -} -#sidebar_panel::-webkit-scrollbar { - display: none; /* Hide scrollbar for Chrome, Safari and Opera */ -} -.sidebar_menu{ - margin-top: 20px !important; -} -.sidebar > h6{ - color: $one__light; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 2px; - font-size: 0.9rem; - margin-left: auto; - margin-right: auto; - width: 38px; - display: block; - margin-top: 18px !important; -} -.sidebar_panel .sidebar { - padding: 0; - white-space: nowrap; - padding-bottom: 20px; - padding-top: 5px; -} -.sidebar_panel .sidebar_close { - text-align: end; - display: none; - position: sticky; - height: 35px; - padding-top: 5px; - top: 0; - background: #2a3042; - z-index: 1; -} -.sidebar_panel .sidebar_close a#closeSidebar { - font-size: 18px; - margin-right: 10px; - color: #ffffff; - opacity: .3; -} -.sidebar_panel .sidebar_close a#closeSidebar img { - width: 15px; -} -.sidebar_panel .sidebar .sidebar_logo { - padding-top: 20px; - text-align: center; - padding-bottom: 20px; -} -.sidebar_panel .sidebar .sidebar_logo img { - max-width: 150px; -} - -.sidebar_panel .sidebar .sidebar_head { - padding-top: 20px; - padding-left: none; - color: $one__light; -} - -.sidebar_panel .sidebar .sidebar_menu { - list-style: none; - margin: 0; - padding: 0; -} - -.sidebar_panel .sidebar .sidebar_menu li { - margin: 0; - padding: 0; - border: 0px; - display: block; -} - -.sidebar_panel .sidebar .sidebar_menu li a { - margin: 0; - border: 0px; - display: block; - cursor: pointer; - overflow: hidden; - padding: 8px 10px 8px 25px; - color: #ffffff; - font-size: 13px; - transition:.3s all; -} -.sidebar_panel .sidebar .sidebar_menu li:hover a { - background: $one__sidebar-color-hover; - color: $one__light; -} - -.sidebar_panel .nav-link { - opacity: 1 !important; - transition:.3s all; -} -.sidebar_panel .sidebar a.nav-link.active { - color: $one__light !important; - border-left: 4px solid $one__light; - - img{ - margin-left: -0.5rem !important; - } -} - -.sidebar_panel .sidebar .sidebar_menu li a .sidebar_img { - width: 32px; - height: 32px; - margin: 8px 8px 8px 0; -} -.sidebar_menu > li a.nav-link{ - &:hover{ - transform: scale(1.05) !important; - transition: all 0.3s linear !important; - } -} - -.datepicker{ - z-index: 9999 !important; -} -div.dropdown-menu.bootstrap-datetimepicker-widget { - width: 28rem !important; -} -// .datepicker .table-sm > thead, -// .datepicker > div > table > tbody > tr > td.active{ -// background-color: $one__primary; -// } -// .datepicker .table-sm > thead > tr:first-child th:hover { -// background-color: $one__primary-dark; -// } -// .datepicker .table-sm > tbody > tr > td.today::before{ -// border-bottom-color: $one__primary; -// } diff --git a/vista_backend_theme/static/src/scss/theme_green.scss b/vista_backend_theme/static/src/scss/theme_green.scss deleted file mode 100644 index fec60388..00000000 --- a/vista_backend_theme/static/src/scss/theme_green.scss +++ /dev/null @@ -1,1070 +0,0 @@ -//Font CSS -/* devanagari */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiEyp8kv8JHgFVrJJbecmNE.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* latin-ext */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 400; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* devanagari */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiByp8kv8JHgFVrLEj6Z11lFc-K.woff2) format('woff2'); - unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB; -} -/* latin-ext */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format('woff2'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: 'Poppins'; - font-style: normal; - font-weight: 600; - src: url(https://fonts.gstatic.com/s/poppins/v15/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -//Variables -$one__font: 'Poppins', Helvetica, Verdana, Arial, sans-serif !important; - -//Colors -$one__light: #fff !default; -$one__primary: #00A97F !default; -$one__sidebar-color: #fff !important; -$one__sidebar-color-hover: #e6f6f2 !default; -$one__sidebar-border: #E9E9E9 !important; -$one__sidebar_text: #00A97F !default; -$one__primary-light: #e6f6f2 !default; -$one__primary-dark: #009872 !important; -$one__light-font-primary: #575757 !important; -$one__light-font-secondary: #575757 !important; -$one__hover-bkg-light: #f5f5f5 !important; -$one__border-light: #d4d4d4 !important; -$one__info: #454555 !important; -//Border Style -$one__border: 3px; -$one__button-padding: auto; -//Misc -$transition-normal: all 0.4s linear !default; -$transition-fast: all 0.2s linear !default; - - -//Paths -$dots_menu_toggled: url('/vista_backend_theme/static/src/img/icons/dots-menu-green.png'); - - - -//Misc -$transition-normal: all 0.4s linear !default; - -//Animations -@mixin c_fadeBackgroundOut($name, $s_opacity, $e_opacity, $r, $g, $b){ - @keyframes #{$name}{ - 0%{ - background-color: rgba($r, $g, $b, $s_opacity); - } - - 100%{ - background-color: rgba($r, $g, $b, $e_opacity); - } - } -} - - - -body{ - background-color: $one__light !important; - font-family: $one__font; -} -//NAVBAR -.o_main_navbar { - -webkit-box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - box-shadow: 0 0.75rem 1.5rem rgba(18,38,63,.03) !important; - background-color: $one__light; - border-bottom: none; - -moz-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - -webkit-box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.5) 0px 6px 6px; - color: $one__light-font-primary; - //height: 60px !important; -} - -.top_heading a.o_menu_brand{ - font-weight: bolder !important; -} - -.o_menu_systray > li{ - font-size: 1.5rem !important; - } - -.o_menu_systray > *{ - margin-right: 15px; - &:last-child{ - margin-right: 0px; - } - - @media (max-width: 767.98px) { - margin-right: 0px !important; - &:last-child{ - margin-right: 0px; - } - } -} -@media (max-width: 767.98px) { - .o_user_menu .o_user_avatar { - margin-right: 0px !important; - } -} - -li.o_MessagingMenu.o-is-open { - background-color: $one__hover-bkg-light; - border-bottom: none !important; -} -.o_mail_systray_item .o_notification_counter{ - background-color: $one__primary !important; - color: $one__light !important; -} -.o_MessagingMenu_counter { - margin-left: -12px !important; -} -.o_notification_counter{ - margin-left: -18px !important; -} -.o_NotificationGroup_date{ - color: $one__primary !important -} -.o_menu_sections > li > a, .o_main_navbar > li > label{ - color: $one__light-font-primary; - display: block !important; - &:hover{ - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; - } -} -.o_switch_company_menu > a{ - color: $one__light-font-primary; - font-size: 1.8rem !important -} -.oe_topbar_name{ - color: $one__light-font-primary; - - @media (max-width: 576px) { - display: none; - } -} -.o_main_navbar > a:hover, .o_main_navbar > a:focus, .o_main_navbar > button:hover, .o_main_navbar > button:focus { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} - -.o_MessagingMenu, .o_mail_systray_item{ - a{ - color: $one__light-font-primary; - } -} -.o_MessagingMenu_counter, .o_notification_counter { - background-color: $one__primary; - color: $one__light; -} -.o_main_navbar .show .dropdowdropdown-toggle, .o_main_navbar .show .dropdown-toggle { - background-color: $one__hover-bkg-light; - //border-bottom: 1px solid $one__border-light; -} -.o_main_navbar .o_user_menu .oe_topbar_avatar { - height: 32px !important; - width: 32px !important; -} -.oe_topbar_name{ - color: $one__light-font-primary !important; -} -.o_dashboards .o_website_dashboard div.o_box h2, .o_dashboards .o_website_dashboard div.o_box h4 { - color: $one__primary !important; -} -.o_control_panel { - padding: 2.5rem 1rem !important; - margin-bottom: 1.5rem !important; - border-bottom: 1px solid $one__border-light; - width: 98%; - margin-left: auto; - margin-right: auto; -} -.o_form_view .oe_button_box .oe_stat_button .o_button_icon { - color: $one__primary; -} -.o_control_panel .breadcrumb{ - background-color: none !important; - padding: auto !important -} -.o_control_panel .breadcrumb > li, .breadcrumb-item > a{ - font-size: 2rem !important; - color: $one__light-font-secondary; - max-width: 100% !important; -} -.o_control_panel > div{ - display: flex; - justify-content: space-between; -} - -.breadcrumb-item.active{ - $color: $one__light-font-primary; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::before { - border-left-color: $one__primary !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after, -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before { - border-left-color: none !important; -} -.o_statusbar_status > .o_arrow_button.btn-secondary{ - background-color: $one__light !important; -} -.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.disabled { - border-left: none !important; -} -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::before, -// .o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button:not(:first-child)::after { -// background-color: $one__light !important; -// } - - - -.o_content{ - width: 98%; - margin-left: auto; - margin-right: auto; -} -.top_heading{ - display: flex; - align-items: center; - ul.o_menu_apps{ - list-style: none; - margin: 0 0.8rem 0 0; - padding: 0px; - } - li.dropdown{ - list-style: none; - } - a.o_menu_brand{ - color: $one__light-font-primary; - font-size: 1.5rem !important; - } -} -.o_menu_sections, .o_menu_systray{ - display: flex; - align-items: center; - list-style: none !important; - //height: 60px !important; - - li{ - margin-right: 1rem; - - &:last-child{ - margin-right: 0 !important; - } - } - .o-dropdown.dropdown > .o-dropdown--menu{ - border-color: transparent; - } -} -.o_main_navbar .dropdown .dropdown-toggle, -.o_main_navbar .o_menu_sections .dropdown .dropdown-toggle, -.o_nav_entry -{ - color: $one__light-font-primary; -} -.o_menu_systray, .o_menu_sections{ - li{ - position: relative !important; - a.o_MessagingMenu_toggler, a.dropdown-toggle{ - display: flex !important; - align-items: center !important; - height: 60px !important; - padding: 0px 7.5px; - - img{ - margin-right: 0.8rem; - transform: none !important; - } - } - } -} -.o_main_navbar .dropdown-menu.show { - min-width: auto !important; -} -.o_form_view .o_form_uri > span:first-child { - color: $one__primary; -} -.o_onboarding_container{ - margin-top: -1.575rem !important; -} -.o_loading_indicator.o_loading > span { - background: $one__primary !important; -} -.o_menu_systray > li > a > span.fa{ - color: $one__light-font-primary; - font-size: 1.9rem !important; - margin: auto 11px !important; -} - -//`Custom` -.c_navbar_container{ - display: flex; - justify-content: center; - width: 100%; - margin-left: auto; - margin-right: auto; - padding: 0 1rem 0 0 !important; -} - -.c_sidebar_active{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__primary; - color: $one__light !important; - margin-right: 1.5rem !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); - - &:hover{ - background-color: $one__primary-dark; - transition: $transition-normal; - } -} - -.c_sidebar_passive{ - height: 46px; - width: 60px; - display: flex !important; - justify-content: center; - align-items: center; - background-color: $one__light; - color: $one__primary !important; - clip-path: polygon(0 0, 100% 0%, 86% 100%, 0% 100%); -} - -//END OF NAVBAR -.dropdown-menu{ - border-radius: 0px; - a, .dropdown-item{ - color: $one__light-font-primary; - &:hover{ - color: $one__primary !important; - background-color: $one__primary-light; - transition: $transition-normal; - } - } -} -//Buttons - -.btn{ - border-radius: 0px; - - &:hover{ - filter: brightness(90%) !important; - box-shadow: none; - transition: $transition-normal; - } - -} - -.btn-primary{ - background-color: $one__primary !important; - border-color: $one__primary !important; - color: $one__light !important; - - &:hover{ - background-color: $one__primary-dark !important; - } - - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(235,240,253, 0.8); - } -} -.btn-secondary{ - background-color: $one__hover-bkg-light; - border-color: $one__hover-bkg-light; - color: $one__light-font-primary; - &:focus{ - box-shadow: 0 0 0 0.2rem rgba(245,245,245, 1); - } - - -} -.btn-fill-info, .btn-info { - background-color: $one__info; - border-color: $one__info; - color: $one__light; -} -.btn-group, .o_filter_menu{ - button, div.btn-group{ - margin-right: 3px; - &:last-child{ - margin-right: 0px !important; - } - } -} -.btn-link{ - color: $one__primary !important; - - &:hover{ - background-color: $one__hover-bkg-light !important; - } -} - -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .o_dropdown_toggler_btn, -.o_control_panel .o_cp_bottom_left > .o_cp_action_menus .dropdown-toggle - { - margin-right: 0px !important; -} -.o_activity_view .o_record_selector, .o_stat_value { - color: $one__primary !important; -} - -.o_web_settings_invite{ - height: 26px !important; - margin-top: 6px !important; -} - -.o_NotificationList{ - div:hover { - background-color: $one__primary-light; - } -} -.o_MessagingMenu_tabButton, .o_MessagingMenu_newMessageButton{ - color: $one__primary; - opacity: 0.8; - .o-active{ - opacity: 1; - font-weight: bold; - } -} -.o_ThreadPreview_date, .o_activity_filter_button, .o_mail_activity_action{ - color: $one__primary !important; - - &:before{ - color: $one__light-font-primary; - } - &:hover{ - color: $one__primary-dark !important; - } -} -//Controls -.custom-control.custom-checkbox .custom-control-input:not(:checked):not(:indeterminate) ~ .custom-control-label::before { - background: none; - outline: 1px solid $one__hover-bkg-light; -} -.custom-checkbox .custom-control-label::before { - border-radius: 0px; -} -.custom-control-input:checked ~ .custom-control-label::before { - color: $one__light; - border-color: $one__primary; - background-color: $one__primary; -} -.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23FFFFFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); -} - -.o_input{ - border-radius: 0px !important; - border-color: $one__border-light; -} -.o_required_modifier.o_input, .o_required_modifier .o_input, .o_searchview .o_searchview_autocomplete li.o_selection_focus { - background-color: $one__primary-light !important; -} -.ui-menu-item > a{ - background-color: $one__light !important; - color: $one__primary !important; - &:hover, &:active, &:focus, &:focus-within, &:focus-visible, &:visited{ - color: $one__primary !important; - background-color: $one__primary-light !important; - } -} -.nav-tabs .nav-link { - border-radius: 0px !important; - border-top: 3px solid transparent !important; -} -.nav-tabs .nav-link.active { - border-top: 3px solid $one__primary !important; -} -.nav-tabs .nav-link:hover{ - border-top: 3px solid $one__primary !important; - color: $one__primary-dark; - transition: transition-normal !important; -} -.o_form_view .o_horizontal_separator { - color: $one__primary; -} -.panel-heading.note-toolbar { - background-color: $one__light !important; -} -div.o_boolean_toggle.custom-control.custom-checkbox > input.custom-control-input:checked + label.custom-control-label::before { - background-color: $one__primary !important; -} -//Misc. -.badge-primary{ - background-color: $one__primary; - border-radius: 0px; - padding: 5px; -} -//Links -a { - color: $one__primary; - text-decoration: none; - background-color: transparent; - - &hover{ - color: $one__primary-dark; - text-decoration: none; - transition: $transition-normal; - } -} -a.o_menu_brand{ - color: $one__light-font-primary; - font-weight: bold; -} -.o_form_uri{ - color: $one__primary !important; -} -.o_Message_prettyBody > div > p > a { - background-color: $one__primary !important; -} - -.o_onboarding_step_title > a { - color: $one__light; -} -.oe_kanban_action_a{ - color: $one__light-font-primary; -} - -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click:focus-within, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus, -.o_kanban_view .oe_kanban_card.oe_kanban_global_click_edit:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click:focus-within, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus, -.o_kanban_view .o_kanban_record.oe_kanban_global_click_edit:focus-within{ - outline: thin solid $one__primary-light !important; -} - -//Tables -.o_list_view thead { - background-color: $one__hover-bkg-light; -} - -.o_list_view .o_list_table thead { - color: $one__light-font-secondary; - border-bottom: 1px solid $one__border-light; -} -.o_list_view .o_list_table thead > tr > th:not(.o_list_record_selector) { - border-left: none; -} -table thead th { - vertical-align: bottom; - border-top: none !important; - border-bottom: none !important; - padding: 1rem !important; -} -table-sm th, .table-sm td { - padding: 1rem !important; - border-top: none !important; -} -tr:nth-child(even){ - background-color: $one__hover-bkg-light; -} -.o_list_view .o_list_table tfoot { - background-color: $one__light; - filter: brightness(95.5%) !important; -} - -//Search -.o_searchview .o_searchview_facet, .o_setting_search { - background: $one__light; - border-radius: 0px !important; - border: 1px solid $one__border-light; - color: $one__light-font-secondary; -} -.o_searchview .o_searchview_facet .o_searchview_facet_label { - background-color: $one__light; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label { - color: $one__light-font-secondary; - margin: 0px -3px 3px 3px; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_remove{ - bottom: 3px !important; -} -.o_searchview .o_searchview_input_container .o_searchview_facet .o_facet_values { - padding: 2px 18px 0 5px !important; -} -.o_searchview{ - padding: 0.5rem !important; - border-radius: 0px; -} -.searchInput{ - border: none !important; -} -.searchIcon{ - margin: 5px 10px 0 0; -} -.o_setting_search { - padding: 5px; -} - -//Kanban -.oe_kanban_card{ - border-color: $one__border-light; - padding: 1rem !important; -} - -//Calendar -@include c_fadeBackgroundOut('fadeCalendarRow', 1, 0.6, 212, 212, 212 ); - -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day.ui-datepicker-today a, -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-current-day a, -.o_calendar_view .o_calendar_widget .fc-dayGridMonth-view .fc-content-skeleton .fc-today .fc-day-number -{ - color: $one__light !important; - background-color: $one__primary !important; -} - -.o_calendar_sidebar_container .ui-datepicker td a{ - color: $one__light-font-secondary; -} -.o_calendar_sidebar_container .ui-datepicker td.ui-datepicker-today a{ - background-color: $one__border-light; -} - -.o_calendar_sidebar_container .ui-datepicker .o_selected_range.o_color:not(.ui-datepicker-unselectable) { - animation: fadeCalendarRow 2s forwards; -} - -.fc-now-indicator { - border-color: $one__primary !important; -} -.fc-ltr .fc-time-grid .fc-now-indicator-arrow { - left: 0; - border-width: 5px 0 5px 6px; - border-top-color: transparent !important; - border-bottom-color: transparent !important; -} - -.o_calendar_view .fc-view .fc-event.o_calendar_color_1.o_cw_custom_highlight { - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - color: $one__primary; - font-weight: bold; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 .fc-bg { - background-color: $one__primary-light; -} -.o_calendar_view .fc-view .fc-event.o_calendar_color_1 { - border-color: $one__primary; - color: #274aa5; - opacity: 0.8; - - &:hover{ - background: $one__primary-light; - box-shadow: 0 12px 12px -5px rgba(156, 181, 245, 0.8); - } -} - -.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover { - background-color: $one__primary !important; -} - -//Dashboard Sidebar -.o_Discuss, .o_setting_container{ - width: 98%; - margin-right: auto; - margin-left: auto; - border-top: none; -} -.o_widget_Discuss .o_Discuss_content { - border-top: none !important; -} -.o_DiscussSidebar, .settings_tab{ - color: $one__light-font-primary; - background-color: transparent !important; - border-right: 2px solid $one__border-light; - height: 95%; - margin-top: auto; - margin-bottom: auto; -} -.o_DiscussSidebarItem{ - padding: 0.4rem 0 !important; -} -.o_DiscussSidebarItem_activeIndicator.o-item-active{ - width: 0; - height: 0; - background: transparent; - margin-top: 0.375rem; - margin-right: 8px !important; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; -} -.o_DiscussSidebarItem:hover{ - background-color: transparent !important; - color: $one__primary; -} -.o_DiscussSidebar_separator{ - width: 95% !important; - margin-left: auto; - margin-right: auto; - background-color: transparent !important; -} -.o_MessageList{ - padding: 10px !important; -} - -.o_Message.o-not-discussion{ - background-color: $one__hover-bkg-light; - border-color: $one__border-light; -} - -//Settings - -.o_setting_container .settings_tab { - .app_name{ - color: $one__light-font-primary !important; - } -} - -.o_base_settings .o_control_panel .o_panel .o_setting_search .searchInput { - max-width: none !important; - margin: 4px 0 0 10px !important; -} - -.o_setting_container .settings_tab .tab{ - height: 30px !important; -} - -.o_setting_container .settings{ - padding: 10px !important; -} -.o_setting_container .settings_tab .app_name { - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } -} -.o_setting_container .settings_tab .selected{ - background: transparent !important; - box-shadow: none !important; - position: relative; - - &:before{ - content: ""; - position: absolute; - width: 0; - height: 0; - top: 24%; - left: 0; - background: transparent; - margin-top: 0.375rem; - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 5px solid $one__primary; - } - - .app_name{ - color: $one__light-font-primary; - - &:hover{ - color :$one__primary !important; - } - } -} - -.o_form_image_controls > .o_select_file_button{ - background: $one__primary !important; - color: $one__light; -} - -.o_search_panel .o_search_panel_category .o_search_panel_section_icon { - color: $one__primary; -} -.o_search_panel .list-group-item header.active { - background-color: $one__primary-light; - color: $one__primary; -} - -//Chat -.o_ChatWindowHeader{ - background-color: $one__primary !important; - color: $one__light !important; - border-radius: 0px !important; -} -//Tables -.o_purchase_dashboard .table > thead > tr > td.o_main, .o_purchase_dashboard .table tbody > tr > td.o_main { - background-color: $one__primary; - - &:hover{ - background-color: $one__primary-dark; - } - - a{ - color: $one__light; - } -} - -//Tags -.o_field_widget.o_field_many2manytags .o_tag_color_5, -.o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag.o_tag_color_5 span, -.o_kanban_view .o_kanban_record .o_kanban_tags .o_tag.o_tag_color_5 span { - background-color: $one__primary; -} - -.badge-pill{ - a{ - color: $one__light; - } -} -.oe_kanban_card .o_kanban_tags .o_tag, .o_kanban_view .o_kanban_record .o_field_many2manytags .o_tag, .o_kanban_view .o_kanban_record .o_kanban_tags .o_tag { - background-color: transparent !important; -} - -.o-menu-toggle{ - display: none !important; -} -.c_dots_menu{ - background-image: url('/vista_backend_theme/static/src/img/icons/dots-menu.png'); - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} -.c_dots_menu_toggled{ - background-image: $dots_menu_toggled; - width: 18px; - height: 18px; - background-repeat: no-repeat; - background-size: contain; -} - -//Responsive Layout -@media (max-width: 767.98px) { - //Settings - .o_base_settings .o_setting_container { - flex-flow: column nowrap; - - .settings_tab{ - flex-direction: row; - height: 40px; - margin-top: -5px; - justify-content: center; - } - } - //App Bar - .o_control_panel > div { - flex-direction: column; - margin-bottom: 0.5rem; - } - .o_control_panel .breadcrumb > li, .breadcrumb-item > a { - font-size: 1.8rem !important; - margin-bottom: 0.5rem; - } - .o_control_panel .o_cp_top_right { - width: 100%; - margin-bottom: 0.5rem; - } - .o_search_panel .o_search_panel_section_header { - display: none; - } - .o_search_panel { - flex: 0 0 120px !important; - padding: 8px 8px 32px 0px !important; - } - //Discuss - .o_Discuss.o-mobile{ - width: 100% !important; - border-top: 1px solid $one__border-light; - } - .o_MobileMessagingNavbar_tab.o-active > span{ - color: $one__primary !important; - } -} - -//Border Radius -.btn, -.custom-checkbox .custom-control-label::before, -.o_searchview, -.dropdown-menu, -.o_searchview .o_searchview_facet -{ - border-radius: $one__border !important; -} - -#sidebar_panel { - height: 100%; - position: fixed; - top: 0px; - background-color: $one__sidebar-color; - border-right: 1px solid $one__sidebar-border; - display: none; - width: 80px; - overflow-y: scroll; - -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */ - scrollbar-width: none; /* Hide scrollbar for Firefox */ - z-index: 999; -} -.sidebar_app_name{ - display: none; -} -#sidebar_panel::-webkit-scrollbar { - display: none; /* Hide scrollbar for Chrome, Safari and Opera */ -} -.sidebar_menu{ - margin-top: 20px !important; -} -.sidebar > h6{ - color: $one__light; - font-weight: bold; - text-transform: uppercase; - letter-spacing: 2px; - font-size: 0.9rem; - margin-left: auto; - margin-right: auto; - width: 38px; - display: block; - margin-top: 18px !important; -} -.sidebar_panel .sidebar { - padding: 0; - white-space: nowrap; - padding-bottom: 20px; - padding-top: 5px; -} -.sidebar_panel .sidebar_close { - text-align: end; - display: none; - position: sticky; - height: 35px; - padding-top: 5px; - top: 0; - background: #2a3042; - z-index: 1; -} -.sidebar_panel .sidebar_close a#closeSidebar { - font-size: 18px; - margin-right: 10px; - color: #ffffff; - opacity: .3; -} -.sidebar_panel .sidebar_close a#closeSidebar img { - width: 15px; -} -.sidebar_panel .sidebar .sidebar_logo { - padding-top: 20px; - text-align: center; - padding-bottom: 20px; -} -.sidebar_panel .sidebar .sidebar_logo img { - max-width: 150px; -} - -.sidebar_panel .sidebar .sidebar_head { - padding-top: 20px; - padding-left: none; - color: $one__sidebar_text; -} - -.sidebar_panel .sidebar .sidebar_menu { - list-style: none; - margin: 0; - padding: 0; -} - -.sidebar_panel .sidebar .sidebar_menu li { - margin: 0; - padding: 0; - border: 0px; - display: block; -} - -.sidebar_panel .sidebar .sidebar_menu li a { - margin: 0; - border: 0px; - display: block; - cursor: pointer; - overflow: hidden; - padding: 8px 10px 8px 25px; - color: #ffffff; - font-size: 13px; - transition:.3s all; -} -.sidebar_panel .sidebar .sidebar_menu li:hover a { - background: $one__sidebar-color-hover; - color: $one__light; -} - -.sidebar_panel .nav-link { - opacity: 1 !important; - transition:.3s all; -} -.sidebar_panel .sidebar a.nav-link.active { - color: $one__light !important; - border-left: 4px solid $one__light; - - img{ - margin-left: -0.5rem !important; - } -} - -.sidebar_panel .sidebar .sidebar_menu li a .sidebar_img { - width: 32px; - height: 32px; - margin: 8px 8px 8px 0; -} -.sidebar_menu > li a.nav-link{ - &:hover{ - transform: scale(1.05) !important; - transition: all 0.3s linear !important; - } -} - -.datepicker{ - z-index: 9999 !important; -} -div.dropdown-menu.bootstrap-datetimepicker-widget { - width: 28rem !important; -} -// .datepicker .table-sm > thead, -// .datepicker > div > table > tbody > tr > td.active{ -// background-color: $one__primary; -// } -// .datepicker .table-sm > thead > tr:first-child th:hover { -// background-color: $one__primary-dark; -// } -// .datepicker .table-sm > tbody > tr > td.today::before{ -// border-bottom-color: $one__primary; -// } diff --git a/vista_backend_theme/static/src/xml/systray.xml b/vista_backend_theme/static/src/xml/systray.xml deleted file mode 100644 index a3005a15..00000000 --- a/vista_backend_theme/static/src/xml/systray.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/static/src/xml/top_bar.xml b/vista_backend_theme/static/src/xml/top_bar.xml deleted file mode 100644 index aa32caa3..00000000 --- a/vista_backend_theme/static/src/xml/top_bar.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MENU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vista_backend_theme/views/assets.xml b/vista_backend_theme/views/assets.xml deleted file mode 100644 index 29675fee..00000000 --- a/vista_backend_theme/views/assets.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - Theme Vista Backend Green - web.assets_backend - replace - /vista_backend_theme/static/src/scss/theme.scss - /vista_backend_theme/static/src/scss/theme_green.scss - False - - - Theme Vista Backend Black - web.assets_backend - replace - /vista_backend_theme/static/src/scss/theme.scss - /vista_backend_theme/static/src/scss/theme_black.scss - False - - - Theme Vista frond - web.assets_frontend - replace - /vista_backend_theme/static/src/scss/login.scss - /vista_backend_theme/static/src/scss/login_black.scss - False - - - Theme Vista - web.assets_frontend - replace - /vista_backend_theme/static/src/scss/login.scss - /vista_backend_theme/static/src/scss/login_green.scss - False - - diff --git a/vista_backend_theme/views/icons.xml b/vista_backend_theme/views/icons.xml deleted file mode 100644 index fd49b7c2..00000000 --- a/vista_backend_theme/views/icons.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/views/layout.xml b/vista_backend_theme/views/layout.xml deleted file mode 100644 index 5b9b55e1..00000000 --- a/vista_backend_theme/views/layout.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - Database - - - - Select - - - - - - - - Email - - - - - Password - - - - - - - - - - - - - Log in - - - Log in - as superuser - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Manage - Databases - - - Powered by - Odoo - - - - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/views/res_config.xml b/vista_backend_theme/views/res_config.xml deleted file mode 100644 index 86514a18..00000000 --- a/vista_backend_theme/views/res_config.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - res.config.settings.web.window.title - res.config.settings - - - - 视窗 - - - - 标题 - - 自定义网站窗口标题 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/views/theme.xml b/vista_backend_theme/views/theme.xml deleted file mode 100644 index 3dbba597..00000000 --- a/vista_backend_theme/views/theme.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - them.data.form - theme.data - - - - - - - - - - - - - - - - theme data - theme.data - form - - new - - - - - - - - - - \ No newline at end of file diff --git a/vista_backend_theme/wizard/__init__.py b/vista_backend_theme/wizard/__init__.py deleted file mode 100644 index 0848c922..00000000 --- a/vista_backend_theme/wizard/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import theme diff --git a/vista_backend_theme/wizard/theme.py b/vista_backend_theme/wizard/theme.py deleted file mode 100644 index d9040183..00000000 --- a/vista_backend_theme/wizard/theme.py +++ /dev/null @@ -1,527 +0,0 @@ - -import base64 - -from odoo import models, fields, api -from odoo.modules import get_module_resource - - -class Theme(models.TransientModel): - _name = "theme.data" - - def _get_current_theme(self): - return self.env['theme.data.stored'].sudo().search([], limit=1).name - - name = fields.Selection([ - ('default', 'Default'), - ('two', 'Green'), - ('three', 'Black'), - ], 'Theme', required=True, default=_get_current_theme) - - @api.onchange('name') - def onchange_name(self): - theme = self.sudo().env.ref('vista_backend_theme.theme_data_stored') - if theme: - theme.name = self.name - else: - theme.create({ - 'name': self.name - }) - - def action_apply(self): - name = self.env['theme.data.stored'].sudo().search([], limit=1).name - if name == 'two': - self.env.ref('vista_backend_theme.vista_theme_css_black').active = False - self.env.ref('vista_backend_theme.vista_theme_css_login_black').active = False - self.env.ref('vista_backend_theme.vista_theme_css_green').active = True - self.env.ref('vista_backend_theme.vista_theme_css_login_green').active = True - self.icon_change_theme_green() - elif name == 'three': - self.env.ref('vista_backend_theme.vista_theme_css_green').active = False - self.env.ref('vista_backend_theme.vista_theme_css_login_green').active = False - self.env.ref('vista_backend_theme.vista_theme_css_black').active = True - self.env.ref('vista_backend_theme.vista_theme_css_login_black').active = True - self.icon_change_theme_default() - else: - self.env.ref('vista_backend_theme.vista_theme_css_green').active = False - self.env.ref('vista_backend_theme.vista_theme_css_black').active = False - self.env.ref('vista_backend_theme.vista_theme_css_login_green').active = False - self.env.ref('vista_backend_theme.vista_theme_css_login_black').active = False - self.icon_change_theme_default() - - return { - 'type': 'ir.actions.client', - 'tag': 'reload', - } - - def icon_change_theme_default(self): - menu_item = self.env['ir.ui.menu'].sudo().search([('parent_id', '=', False)]) - for menu in menu_item: - if menu.name == 'Contacts': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'contacts.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Link Tracker': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'link-tracker.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Dashboards': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'dashboards.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Sales': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'sales.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Invoicing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'accounting.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Accounting': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'accounting.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Inventory': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'inventory.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Purchase': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'purchase.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Calendar': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'calendar.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'CRM': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'crm.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Note': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'note.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Website': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'website.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Point of Sale': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'pos.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Manufacturing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'manufacturing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Repairs': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'repairs.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Email Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'email-marketing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'SMS Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'sms-marketing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Project': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'project.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Surveys': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'surveys.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Employees': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'employee.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Recruitment': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'recruitment.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Attendances': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'attendances.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Time Off': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'timeoff.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Expenses': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'expenses.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Maintenance': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'maintenance.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Live Chat': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'live-chat.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Lunch': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'lunch.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Fleet': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'fleet.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Timesheets': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'timesheets.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Events': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'events.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'eLearning': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'elearning.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Members': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'members.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Apps': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'apps.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Discuss': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'discuss.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Settings': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', 'icons', - 'settinga.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - - def icon_change_theme_green(self): - menu_item = self.env['ir.ui.menu'].sudo().search([('parent_id', '=', False)]) - for menu in menu_item: - if menu.name == 'Contacts': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'contacts.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Link Tracker': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'link-tracker.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Dashboards': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'dashboards.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Sales': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'sales.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Invoicing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'accounting.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Inventory': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'inventory.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Purchase': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'purchase.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Calendar': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'calendar.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'CRM': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'crm.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Note': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'note.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Website': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'website.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Point of Sale': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'pos.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Manufacturing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'manufacturing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Repairs': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'repairs.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Email Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'email-marketing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'SMS Marketing': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'sms-marketing.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Project': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'project.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Surveys': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'surveys.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Employees': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'employee.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Recruitment': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'recruitment.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Attendances': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'attendances.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Time Off': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'timeoff.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Expenses': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'expenses.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Maintenance': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'maintenance.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Live Chat': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'live-chat.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Lunch': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'lunch.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Fleet': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'fleet.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Timesheets': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'timesheets.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Events': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'events.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'eLearning': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'elearning.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Members': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'members.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Apps': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'apps.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Discuss': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'discuss.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Settings': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'settinga.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - if menu.name == 'Accounting': - img_path = get_module_resource( - 'vista_backend_theme', 'static', 'src', 'img', - 'icons_green', - 'accounting.png') - menu.write({'web_icon_data': base64.b64encode( - open(img_path, "rb").read())}) - - -class ThemeStored(models.Model): - _name = "theme.data.stored" - - name = fields.Selection([ - ('default', 'Default'), - ('two', 'Green'), - ('three', 'Black'), - ], 'Theme', default='default')
Multi-Color - & Multi-Design Backend Theme for - Odoo 16
Kanban view with a clean layout and modified font.
Customized minimal and colorful login screen.
Discuss page with a different style.
Fully responsive layout which enables to view and manage everything from the - comfort of your mobile device.
Modified app drawer which helps to navigate through different applications.
Customized date picker
Tree view with a clean layout and modified font.
Form view with a clean layout and modified font.
- We provide following services
- Our industry specifics and process segments to solve your complex business barriers.
Easily procure - and - sell your products
Easy - configuration - and convivial experience
A platform for - educational management
Plan, track and - schedule your operations
Mobile - friendly, - awe-inspiring product pages
Keep track of - services and invoice
Run your bar or - restaurant methodically
An - all-inclusive - hotel management application
- Do you have any queries regarding our products & services? Let us know.
- -