Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Variables used by Scriptable.
- // These must be at the very top of the file. Do not edit.
- // icon-color: deep-green; icon-glyph: leaf;
- let req = new Request("https://www.simbio.si/sl/moj-dan-odvoza-odpadkov");
- req.method = "POST";
- req.headers = {
- "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
- };
- req.addParameterToMultipart("action", "simbioOdvozOdpadkov");
- req.addParameterToMultipart("query", "ULICA 12 CELJE");
- let res = await req.loadJSON();
- /*
- response:
- [{
- "_id": "665fc62c8a7f6faa",
- "id": "11222264",
- "name": "ULICA 12 ",
- "query": "ulica 12 celje",
- "city": "CELJE",
- "next_mko": "četrtek, 13. 6. 2024",
- "next_emb": "četrtek, 6. 6. 2024",
- "next_bio": "ponedeljek, 10. 6. 2024"
- }]
- */
- let data = res[0];
- let now = new Date();
- now.setHours(- now.getTimezoneOffset()/60,0,0,0);
- let date_mko = data.next_mko.replace(/[^\d\.]/g, "").split('.');
- let next_mko = new Date(date_mko[2], date_mko[1] - 1, date_mko[0]);
- next_mko.setHours(- next_mko.getTimezoneOffset()/60);
- if (next_mko < now) {
- next_mko.setDate(next_mko.getDate() + 14);
- }
- let date_emb = data.next_emb.replace(/[^\d\.]/g, "").split('.');
- let next_emb = new Date(date_emb[2], date_emb[1] - 1, date_emb[0]);
- next_emb.setHours(- next_emb.getTimezoneOffset()/60);
- if (next_emb < now) {
- next_emb.setDate(next_emb.getDate() + 14);
- }
- let date_bio = data.next_bio.replace(/[^\d\.]/g, "").split('.');
- let next_bio = new Date(date_bio[2], date_bio[1] - 1, date_bio[0]);
- next_bio.setHours(- next_bio.getTimezoneOffset()/60);
- if (next_bio < now) {
- next_bio.setDate(next_bio.getDate() + 14);
- }
- let widget_data = [
- {
- name: 'Mešani odpadki', // 'MKO'
- date: next_mko,
- diff: Math.floor((next_mko - now) / 86400000),
- day: next_mko.toLocaleDateString('sl-SI', { weekday: 'long' }),
- color1: '#4cb300',
- color2: '#407000',
- },
- {
- name: 'Embalaža', // 'EMB'
- date: next_emb,
- diff: Math.floor((next_emb - now) / 86400000),
- day: next_emb.toLocaleDateString('sl-SI', { weekday: 'long' }),
- color1: '#ffd600',
- color2: '#ffa600',
- },
- {
- name: 'Biološki odpadki', // 'BIO'
- date: next_bio,
- diff: Math.floor((next_bio - now) / 86400000),
- day: next_bio.toLocaleDateString('sl-SI', { weekday: 'long' }),
- color1: '#b37800',
- color2: '#704500',
- }
- ];
- // sort by date
- widget_data.sort((a, b) => a.date - b.date);
- const widget = new ListWidget();
- let nextRefresh = Date.now() + 1000 * 60 * 60 * 3; // 3 hours
- widget.refreshAfterDate = new Date(nextRefresh);
- const padding = 16;
- widget.setPadding(padding * 2, padding, padding, padding);
- const gradient = new LinearGradient()
- gradient.locations = [0, 1]
- gradient.colors = [
- new Color(widget_data[0].color1),
- new Color(widget_data[0].color2)
- ]
- widget.backgroundGradient = gradient
- widget_data.forEach(element => {
- const header = widget.addText(element.name);
- header.font = Font.mediumSystemFont(12);
- header.textColor = Color.white();
- header.shadowColor = new Color("#000000", 0.3);
- header.shadowRadius = 1;
- header.shadowOffset = new Point(2, 2);
- header.minimumScaleFactor = 1;
- let day;
- if (element.diff > 7) {
- day = 'čez ' + element.diff + ' dni';
- } else {
- day = element.diff == 0 ? 'danes' : element.diff == 1 ? 'jutri' : element.day;
- }
- const disclaimer = widget.addText(day);
- disclaimer.font = Font.boldSystemFont(14);
- disclaimer.textColor = Color.white();
- disclaimer.shadowColor = new Color("#000000", 0.3);
- disclaimer.shadowRadius = 1;
- disclaimer.shadowOffset = new Point(2, 2);
- disclaimer.minimumScaleFactor = 1;
- widget.addSpacer(padding);
- });
- Script.setWidget(widget);
- Script.complete();
- widget.presentSmall();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement