You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.9 KiB
78 lines
2.9 KiB
/** @odoo-module **/
|
|
import { Dropdown } from "@web/core/dropdown/dropdown";
|
|
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
|
|
import { CheckBox } from "@web/core/checkbox/checkbox";
|
|
import { browser } from "@web/core/browser/browser";
|
|
import { registry } from "@web/core/registry";
|
|
import { useService } from "@web/core/utils/hooks";
|
|
import { session } from "@web/session";
|
|
import { Component } from "@odoo/owl";
|
|
var ajax = require('web.ajax');
|
|
const { onWillStart } = owl;
|
|
/**Component for displaying weather information in the user menu. **/
|
|
export class WeatherMenu extends Component {
|
|
setup() {
|
|
this.user = useService("user");
|
|
this.session = session;
|
|
onWillStart(async () => {
|
|
/**Updating weather data at initial time **/
|
|
const weather_data = await this.fetch_data();
|
|
if (weather_data.hasOwnProperty("data")) {
|
|
this.session.name = '';
|
|
this.session.main = '';
|
|
this.session.description = 'Configure Notification Settings';
|
|
this.session.temp = '';
|
|
} else {
|
|
this.session.name = weather_data.name;
|
|
this.session.main = weather_data.weather[0].main;
|
|
this.session.description = weather_data.weather[0].description;
|
|
this.session.temp =
|
|
Math.round(weather_data.main['temp'] - 273.15);
|
|
}
|
|
});
|
|
const { origin } = browser.location;
|
|
const { userId } = this.user;
|
|
}
|
|
async getElements() {
|
|
/**Updating weather data while loading template**/
|
|
const self = this;
|
|
const weather_data = await self.fetch_data();
|
|
if (weather_data.hasOwnProperty("data")) {
|
|
self.session.name = '';
|
|
self.session.main = '';
|
|
self.session.description = 'Configure Notification Settings';
|
|
self.session.temp = '';
|
|
} else {
|
|
self.session.name = weather_data.name;
|
|
self.session.main = weather_data.weather[0].main;
|
|
self.session.description = weather_data.weather[0].description;
|
|
self.session.temp = Math.round(weather_data.main['temp'] - 273.15);
|
|
}
|
|
}
|
|
fetch_data() {
|
|
/**Fetching weather data using jsonrpc call**/
|
|
return new Promise(function(resolve, reject) {
|
|
var self = this;
|
|
ajax.jsonRpc('/weather/notification/check', 'call', {}).
|
|
then(function(data) {
|
|
resolve(data);
|
|
})
|
|
});
|
|
}
|
|
}
|
|
WeatherMenu.template = "user_weather_notification.UserMenuS";
|
|
WeatherMenu.components = {
|
|
Dropdown,
|
|
DropdownItem,
|
|
CheckBox
|
|
};
|
|
/**
|
|
Component for displaying weather information in the system tray.
|
|
**/
|
|
export const systrayItem = {
|
|
Component: WeatherMenu,
|
|
};
|
|
registry.category("systray").add("user_weather_notification.user_menus",
|
|
systrayItem, {
|
|
sequence: 0
|
|
});
|
|
|