Last active
August 24, 2020 15:13
-
-
Save brkayaoglu/141072e89d9fbc2a8fb93309e3138b86 to your computer and use it in GitHub Desktop.
Performs a basic Excel API call using plain JavaScript & Promises.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Basic API call 2(JavaScript) | |
description: Performs a basic Excel API call using plain JavaScript & Promises. | |
host: EXCEL | |
api_set: {} | |
script: | |
content: "class Injection {\n constructor(id, name, eic, org_eic, inj_type) {\n this.id = id;\n this.name = name;\n this.eic = eic;\n this.org_eic = org_eic;\n this.inj_type = inj_type;\n }\n}\n\nclass Organization {\n constructor(organizationId, organizationName, organizationETSOCode, injectionsList) {\n this.organizationId = organizationId;\n this.organizationName = organizationName;\n this.organizationETSOCode = organizationETSOCode;\n this.injectionsList = null;\n }\n}\n\nclass Portfolio {\n static portfolioCount = Office.context.document.settings.get(\"portfolioLength\");\n constructor(portfolioName, injections) {\n this.portfolioName = portfolioName;\n this.injections = injections;\n }\n}\n\nclass AppVariables {\n static selectedInjections = [];\n static global_index_for_item = 0; //index that updated portfolio had\n static comboBoxOptionsList = []; //combobox options list\n static globalCheckboxes = []; //kgüp, eak, uretim checkboxes -> [0]-> kgup, [1]->eak, [2]->uretim\n static globalInjections = []; //Injections that exist in portfolio\n static totalKgup = [];\n static finalKgup = [];\n static totalEak = [];\n static finalEak = [];\n static totalUretim = [];\n static finalUretim = [];\n static comboBoxExpanded = false;\n static corsSolver = \"https://cors-anywhere.herokuapp.com/\";\n static commonUrl = AppVariables.corsSolver + \"https://seffaflik.epias.com.tr/transparency/service/\";\n static updateFlag = false;\n\n static startApp() {\n //GLOBAL VARIABLES AND INITIAL EXECUTES\n if (Office.context.document.settings.get(\"getDataFromWeb\") == null) {\n //fetch data for first time\n //console.log(\"first run\");\n getOrganizationList();\n Office.context.document.settings.set(\"getDataFromWeb\", true);\n persistSettings();\n }\n listOrganizations();\n getFirstTimeData();\n var btn = document.getElementById(\"portfolioSelectButton\");\n Portfolio.portfolioCount == 0 ? (btn.disabled = true) : (btn.disabled = false);\n //save the selected(checkbox) injections\n //GLOBAL VARIABLES END\n }\n}\n\nAppVariables.startApp();\n\nfunction getFirstTimeData() {\n document.getElementById(\"page2\").style.display = \"none\";\n getPortfoliosFromOffice();\n}\n\nfunction getPortfoliosFromOffice() {\n //console.log(Office.context.document.settings.get(\"portfolioLength\"));\n var list = document.getElementById(\"portfolioSelect\");\n list.innerHTML = \"\";\n for (var i = 0; i < Office.context.document.settings.get(\"portfolioLength\"); i++) {\n Office.context.document.settings.get(\"p\" + i) != null\n ? (list.innerHTML += `\n <option id=\"${\"p\" + i}\" value=\"${\"p\" + i}\">\n ${Office.context.document.settings.get(\"p\" + i).portfolioName}\n </option>\n `)\n : \"\";\n }\n}\n\nfunction listOrganizations() {\n var i, organization_list, organization_id, organization_name;\n organization_list = document.querySelector(\"#organizations_list\");\n for (i = 0; i < 12; i++) {\n //Office.context.document.settings.get(\"length\")\n organization_id = Office.context.document.settings.get(`${i}`).organizationId;\n organization_name = Office.context.document.settings.get(`${i}`).organizationName;\n organization_list.innerHTML += `\n <li> <a> <input type=\"checkbox\" class=\"checkboxOrganizations\" id=\"${organization_id}\"/> ${organization_name} </a> </li>\n `;\n }\n}\n\nfunction searchFunction() {\n var input, filter, ul, li, a, i, txtValue;\n input = document.getElementById(\"searchBox\");\n filter = input.value.toUpperCase();\n ul = document.getElementById(\"organizations_list\");\n li = ul.getElementsByTagName(\"li\");\n for (i = 0; i < li.length; i++) {\n a = li[i].getElementsByTagName(\"a\")[0];\n txtValue = a.textContent || a.innerText;\n if (txtValue.toUpperCase().indexOf(filter) > -1) {\n li[i].style.display = \"\";\n } else {\n li[i].style.display = \"none\";\n }\n }\n}\n\nfunction updateInjectionChecker() {\n var i, organization_id, list;\n list = document.querySelector(\"#injections_list\");\n var founded, test;\n for (i = 0; i < 12; i++) {\n //Office.context.document.settings.get(\"length\")\n organization_id = Office.context.document.settings.get(`${i}`).organizationId;\n founded = document.getElementById(`${organization_id}`);\n if (founded.checked) {\n document.getElementById(\"checkAllInjections\").disabled = false;\n Office.context.document.settings.get(`${i}`).injectionsList.forEach((obj) => {\n test = document.getElementById(`${obj.id}`);\n if (test) {\n } else {\n list.innerHTML += `\n <li> <a> <input type=\"checkbox\" class=\"checkboxInjections\" id=\"${obj.id}\"/> ${obj.name} </a> </li>\n `;\n AppVariables.selectedInjections.push(obj);\n }\n });\n }\n }\n}\n\nfunction findInjections() {\n var i, organization_id, founded, list;\n document.getElementById(\"checkAllInjections\").checked = false;\n list = document.querySelector(\"#injections_list\");\n if (AppVariables.updateFlag) updateInjectionChecker();\n else {\n list.innerHTML = \"\";\n AppVariables.selectedInjections = [];\n for (i = 0; i < 12; i++) {\n //Office.context.document.settings.get(\"length\")\n organization_id = Office.context.document.settings.get(`${i}`).organizationId;\n founded = document.getElementById(`${organization_id}`);\n if (founded.checked) {\n document.getElementById(\"checkAllInjections\").disabled = false;\n Office.context.document.settings.get(`${i}`).injectionsList.forEach((obj) => {\n list.innerHTML += `\n <li> <a> <input type=\"checkbox\" class=\"checkboxInjections\" id=\"${obj.id}\"/> ${obj.name} </a> </li>\n `;\n AppVariables.selectedInjections.push(obj);\n });\n }\n }\n }\n}\n\nfunction refresh() {\n var list;\n document.getElementById(\"checkAllInjections\").checked = false;\n var inputs = document.querySelectorAll(\".checkboxOrganizations\");\n for (var i = 0; i < inputs.length; i++) {\n inputs[i].checked = false;\n }\n list = document.querySelector(\"#injections_list\");\n list.innerHTML = \"\";\n}\n\nfunction toggle(source) {\n var checkboxes = document.querySelectorAll(\".checkboxInjections\");\n for (var i = 0; i < checkboxes.length; i++) {\n checkboxes[i].checked = source.checked;\n }\n}\n\nfunction createPortfolio() {\n var foundedInjection,\n checkedInjections = [],\n portfolioName;\n\n for (var i = 0; i < AppVariables.selectedInjections.length; i++) {\n foundedInjection = document.getElementById(`${AppVariables.selectedInjections[i].id}`);\n if (foundedInjection.checked) {\n checkedInjections.push(AppVariables.selectedInjections[i]);\n //console.log(AppVariables.selectedInjections[i].name);\n }\n }\n if (checkedInjections.length == 0) {\n console.log(\"portfolioya santral ekleyiniz\");\n return;\n }\n portfolioName = document.getElementById(\"portfolioSpace\").value;\n if (portfolioName.length == 0) {\n console.log(\"portfolio ismi giriniz\");\n return;\n } else {\n Office.context.document.settings.get(\"portfolioLength\") == null\n ? Office.context.document.settings.set(\"portfolioLength\", 0)\n : \"\";\n //Portfolio.portfolioCount = Office.context.document.settings.get(\"portfolioLength\");\n var newPortfolio = new Portfolio(portfolioName, checkedInjections);\n\n saveCreatedPortfolio(newPortfolio);\n //console.log(Office.context.document.settings.get(\"portfolioLength\"));\n Portfolio.portfolioCount++;\n AppVariables.selectedInjections = [];\n document.getElementById(\"portfolioSpace\").value = \"\";\n show(\"page2\", \"page1\");\n }\n}\n//console.log(Office.context.document.settings.get(\"portfolioLength\"));\n\n//printAllPortfolios();\n\nfunction removePortfolio(item) {\n if (Office.context.document.settings.get(item) != null) {\n Office.context.document.settings.remove(item);\n\n var old_length = Office.context.document.settings.get(\"portfolioLength\");\n old_length - 1 <= 0\n ? Office.context.document.settings.set(\"portfolioLength\", 0)\n : Office.context.document.settings.set(\"portfolioLength\", old_length - 1);\n persistSettings();\n var opt = document.getElementById(`${item}`);\n opt.remove(opt.selectedIndex);\n var list = document.getElementById(\"portfolio-pages\");\n list.innerHTML = \"\";\n Portfolio.portfolioCount = Office.context.document.settings.get(\"portfolioLength\");\n var btn = document.getElementById(\"portfolioSelectButton\");\n Portfolio.portfolioCount == 0 ? (btn.disabled = true) : (btn.disabled = false);\n }\n}\n\n// function printAllPortfolios() {\n// for (var i = 0; i < Office.context.document.settings.get(\"portfolioLength\"); i++) {\n// console.log(Office.context.document.settings.get(\"p\" + `${i}`));\n// }\n// }\n\nfunction saveCreatedPortfolio(newPortfolio) {\n Office.context.document.settings.set(\n \"p\" + `${Office.context.document.settings.get(\"portfolioLength\")}`,\n newPortfolio\n );\n addPortfoliosToDropdown(\"p\" + `${Office.context.document.settings.get(\"portfolioLength\")}`);\n Office.context.document.settings.set(\"portfolioLength\", Office.context.document.settings.get(\"portfolioLength\") + 1);\n Portfolio.portfolioCount++;\n var btn = document.getElementById(\"portfolioSelectButton\");\n Office.context.document.settings.get(\"portfolioLength\") == 0 ? (btn.disabled = true) : (btn.disabled = false);\n persistSettings();\n refresh();\n}\n\nfunction persistSettings() {\n Office.context.document.settings.saveAsync(function(asyncResult) {});\n}\n\nfunction show(shown, hidden) {\n document.getElementById(shown).style.display = \"block\";\n document.getElementById(hidden).style.display = \"none\";\n return false;\n}\n\nfunction checkButtonsState() {\n var createButton = document.getElementById(\"createPortfolioButton\");\n var updateButton = document.getElementById(\"updatePortfolioButton\");\n if (AppVariables.updateFlag) {\n updateButton.style.display = \"block\";\n createButton.style.display = \"none\";\n } else {\n updateButton.style.display = \"none\";\n createButton.style.display = \"block\";\n }\n}\n\nfunction updatePortfolio(index) {\n AppVariables.global_index_for_item = index;\n var navbar = document.getElementById(\"main_navbar\");\n navbar.style.display = \"none\";\n AppVariables.selectedInjections = [];\n AppVariables.updateFlag = true;\n show(\"page1\", \"page2\");\n checkButtonsState();\n var injection_list = document.getElementById(\"injections_list\");\n refresh();\n var portfolioObject = Office.context.document.settings.get(index);\n //console.log(portfolioObject);\n for (var i = 0; i < portfolioObject.injections.length; i++) {\n injection_list.innerHTML += `\n <li> <a> <input type=\"checkbox\" class=\"checkboxInjections\" checked id=\"${portfolioObject.injections[i].id}\"/> ${\n portfolioObject.injections[i].name\n } </a> </li>\n `;\n AppVariables.selectedInjections.push(portfolioObject.injections[i]);\n }\n var portolioNameSpace = document.getElementById(\"portfolioSpace\");\n portolioNameSpace.value = portfolioObject.portfolioName;\n}\n\nfunction saveAndUpdatePortfolio() {\n var foundedInjection,\n checkedInjections = [],\n portfolioName;\n for (var i = 0; i < AppVariables.selectedInjections.length; i++) {\n foundedInjection = document.getElementById(`${AppVariables.selectedInjections[i].id}`);\n if (foundedInjection.checked) {\n checkedInjections.push(AppVariables.selectedInjections[i]);\n //console.log(AppVariables.selectedInjections[i].name);\n }\n }\n if (checkedInjections.length == 0) {\n console.log(\"portfolioya santral ekleyiniz\");\n return;\n }\n portfolioName = document.getElementById(\"portfolioSpace\").value;\n if (portfolioName.length == 0) {\n console.log(\"portfolio ismi giriniz\");\n return;\n } else {\n var updatedObject = Office.context.document.settings.get(AppVariables.global_index_for_item);\n updatedObject.injections = checkedInjections;\n updatedObject.portfolioName = portfolioName;\n saveUpdatedPortfolioToOffice(AppVariables.global_index_for_item, updatedObject);\n AppVariables.updateFlag = false;\n checkButtonsState();\n var navbar = document.getElementById(\"main_navbar\");\n navbar.style.display = \"block\";\n AppVariables.selectedInjections = [];\n document.getElementById(\"portfolioSpace\").value = \"\";\n getPortfoliosFromOffice();\n var list = document.getElementById(\"portfolio-pages\");\n list.innerHTML = \"\";\n refresh();\n show(\"page2\", \"page1\");\n }\n //console.log(AppVariables.selectedInjections);\n}\n\nfunction saveUpdatedPortfolioToOffice(index, updatedPortfolio) {\n Office.context.document.settings.set(index, updatedPortfolio);\n persistSettings();\n}\n\nfunction addPortfolioItem(items, index) {\n var list = document.getElementById(\"portfolio-pages\");\n list.innerHTML = `\n <form>\n <section class=\"samples ms-font-m\">\n\t\t\t<div id=\"portfolioDiv\" class=\"container\">\n\t\t\t\t<ul id=\"portfolio_injections_list\">\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<br>\n\t\t\t<button type=\"button\" onclick=\"removeSelected('${index}')\" class=\"buttonContainer\">Remove Selected</button>\n\t\t\t<button type=\"button\" onclick=\"clearList('${index}')\" class=\"buttonContainer\">Clear List</button>\n <button type=\"button\" onclick=\"removePortfolio('${index}');\" class=\"buttonContainer\">Remove Portfolio</button>\n\t\t\t<button type=\"button\" onclick=\"updatePortfolio('${index}');\" class=\"buttonContainer\">Update Portfolio</button>\n <div id=\"time-block\">\n Select Time Interval:<br>\n <div style=\"margin-top:10px;\">Start Date:<input type=\"date\" value=\"2020-08-10\" id=\"startDate\"></div>\n <div style=\"margin-top:10px;\">End Date:<input type=\"date\" value=\"2020-08-23\" id=\"endDate\"></div>\n </div>\n <div class=\"multiSelect\">\n <div class=\"selectBox\" onClick=\"showCheckboxes()\">\n <select>\n <option id=\"optionHeader\"> Select an option </option>\n </select>\n <div class=\"overSelect\"></div>\n <div id=\"checkboxList\">\n <label for=\"kgup\"><input type=\"checkbox\" onclick=\"optionHeaderSet(this)\" class=\"option-checkbox\" name=\"KGÜP\" id=\"kgup\"/>KGÜP</label>\n <label for=\"eak\"><input type=\"checkbox\" onclick=\"optionHeaderSet(this)\" class=\"option-checkbox\" name=\"EAK\" id=\"eak\"/>EAK</label>\n <label for=\"uretim\"><input type=\"checkbox\" onclick=\"optionHeaderSet(this)\" class=\"option-checkbox\" name=\"ÜRETİM\" id=\"uretim\"/>ÜRETİM</label>\n </div>\n </div>\n </div>\n <input type=\"submit\" id=\"getDataButton\" onclick=\"event.preventDefault();getDataAndStore('${index}');\" class=\"buttonContainer\" value=\"Get Data\">\n\t\t</section>\n </form>`;\n var listItems = document.getElementById(\"portfolio_injections_list\");\n listItems.innerHTML = \"\";\n for (var i = 0; i < items.injections.length; i++) {\n listItems.innerHTML += `\n <li id=\"${items.injections[i].id + \"l\"}\"> \n <input type=\"checkbox\" id=\"${items.injections[i].id}\" /> ${items.injections[i].name}\n </li>\n `;\n }\n}\n\nfunction optionHeaderSet(item) {\n var optHeader = document.getElementById(\"optionHeader\");\n item.checked\n ? AppVariables.comboBoxOptionsList.push(item.name)\n : (AppVariables.comboBoxOptionsList = AppVariables.comboBoxOptionsList.filter((e) => e !== item.name));\n AppVariables.comboBoxOptionsList.length == 0\n ? (optHeader.innerHTML = \"Select an option\")\n : (optHeader.innerHTML = \"\");\n AppVariables.comboBoxOptionsList.forEach((item) => (optHeader.innerHTML += `${item}, `));\n var buton = document.getElementById(\"getDataButton\");\n AppVariables.comboBoxOptionsList == 0 ? (buton.disabled = true) : (buton.disabled = false);\n}\n\nconst getDataAndStore = async (index) => {\n var requestedPortfolio = Office.context.document.settings.get(index);\n //console.log(requestedPortfolio)\n AppVariables.globalCheckboxes = [];\n AppVariables.globalInjections = [];\n (AppVariables.finalKgup = []), (AppVariables.finalEak = []), (AppVariables.finalUretim = []);\n var startDate = document.getElementById(\"startDate\").value;\n var endDate = document.getElementById(\"endDate\").value;\n var kgupCheckbox = document.getElementById(\"kgup\");\n var eakCheckbox = document.getElementById(\"eak\");\n var uretimCheckbox = document.getElementById(\"uretim\");\n var optHeader = document.getElementById(\"optionHeader\");\n optHeader.innerHTML = \"Select an option\";\n AppVariables.comboBoxOptionsList = [];\n var arrayOfPromisesKgup = [],\n arrayOfPromisesEak = [],\n arrayOfPromisesUretim = [];\n requestedPortfolio.injections.forEach((inj) => {\n AppVariables.globalInjections.push(inj);\n if (kgupCheckbox.checked) {\n arrayOfPromisesKgup.push(\n kgupRequest(\"production/dpp\", endDate, inj.org_eic, startDate, inj.eic, index, inj.name)\n );\n AppVariables.globalCheckboxes[0] = \"kgüp\";\n }\n if (eakCheckbox.checked) {\n arrayOfPromisesEak.push(eakRequest(\"production/aic\", endDate, inj.org_eic, startDate, inj.eic, index));\n AppVariables.globalCheckboxes[1] = \"eak\";\n }\n if (uretimCheckbox.checked) {\n arrayOfPromisesUretim.push(\n uretimRequest(\"production/real-time-generation_with_powerplant\", endDate, inj.id, startDate, index)\n );\n AppVariables.globalCheckboxes[2] = \"üretim\";\n }\n });\n Promise.all(arrayOfPromisesKgup).then((resultsKgup) => {\n //wait until all data fetched and stored.\n Promise.all(arrayOfPromisesEak).then((resultsEak) => {\n Promise.all(arrayOfPromisesUretim).then((resultsUretim) => {\n if (\n AppVariables.globalInjections != [] &&\n (kgupCheckbox.checked || eakCheckbox.checked || uretimCheckbox.checked)\n ) {\n run(\n AppVariables.globalInjections,\n AppVariables.globalCheckboxes,\n resultsKgup[0],\n resultsEak[0],\n resultsUretim[0]\n );\n }\n kgupCheckbox.checked = false;\n eakCheckbox.checked = false;\n uretimCheckbox.checked = false;\n });\n });\n });\n\n //console.log(kgupCheckbox.checked)\n};\n\nfunction santralTipiCheck(data) {\n var santralTipi = \"\";\n data.dogalgaz > 0 ? (santralTipi = \"Doğalgaz\") : \"\";\n data.ruzgar > 0 ? (santralTipi = \"Rüzgar\") : \"\";\n data.linyit > 0 ? (santralTipi = \"Linyit\") : \"\";\n data.tasKomur > 0 ? (santralTipi = \"Taş Kömür\") : \"\";\n data.ithalKomur > 0 ? (santralTipi = \"İthal Kömür\") : \"\";\n data.fuelOil > 0 ? (santralTipi = \"Benzin\") : \"\";\n data.jeotermal > 0 ? (santralTipi = \"Jeotermal\") : \"\";\n data.barajli > 0 ? (santralTipi = \"Baraj\") : \"\";\n data.nafta > 0 ? (santralTipi = \"Nafta\") : \"\";\n data.biokutle > 0 ? (santralTipi = \"Biokütle\") : \"\";\n data.akarsu > 0 ? (santralTipi = \"Akarsu\") : \"\";\n data.diger > 0 ? (santralTipi = \"Diğer\") : \"\";\n return santralTipi;\n}\n\nconst kgupRequest = async (url_added, endDate, org_eic, startDate, eic, index, name) => {\n return new Promise(function(resolve, reject) {\n var toplam = [];\n var tarih = [];\n var saat = [];\n var santralTipi, santralTipiAtanan;\n var url = `${AppVariables.commonUrl +\n url_added}?endDate=${endDate}&organizationEIC=${org_eic}&startDate=${startDate}&uevcbEIC=${eic}`;\n console.log(url);\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n var posts = JSON.parse(this.responseText);\n //console.log(posts.body);\n posts.body.dppList.forEach((data) => {\n toplam.push(data.toplam);\n tarih.push(data.tarih);\n saat.push(data.saat);\n santralTipi = santralTipiCheck(data);\n santralTipi != \"\" ? (santralTipiAtanan = santralTipi) : \"\";\n });\n AppVariables.totalKgup.push(eic, toplam, tarih, saat);\n AppVariables.finalKgup.push(AppVariables.totalKgup);\n AppVariables.totalKgup = [];\n var portfolio = Office.context.document.settings.get(index);\n var santraller = portfolio.injections;\n santraller.forEach((data) => {\n if ((data.inj_type == undefined || data.inj_type == \"\") && data.eic == eic && santralTipiAtanan != \"\") {\n data.inj_type = santralTipiAtanan;\n Office.context.document.settings.set(index, portfolio);\n persistSettings();\n }\n });\n resolve(AppVariables.finalKgup);\n } else {\n reject(AppVariables.finalKgup);\n }\n }\n };\n xhr.send();\n });\n};\n\nfunction dateFormatter(date) {\n var temp = \"\";\n for (var i = 0; i < date.length; i++) {\n if (date.charAt(i) != \"T\") {\n temp += date.charAt(i);\n } else {\n temp += \" \";\n for (var k = 1; k < 6; k++) {\n temp += date.charAt(i + k);\n }\n break;\n }\n }\n return temp;\n}\n\nasync function run(injections, checkboxes, kgupData, eakData, uretimData) {\n await Excel.run(async (context) => {\n //console.log(injections);\n console.log(kgupData);\n console.log(eakData);\n console.log(uretimData);\n const sheet = context.workbook.worksheets.getActiveWorksheet();\n var celda = sheet.getRange();\n celda.clear();\n var ce = sheet.getRange(\"B2\");\n var se = sheet.getRange(\"C1\");\n await context.sync();\n var tr = sheet.getRange(\"A2\");\n tr.values = \"tarih\";\n var other_counter = 1;\n checkboxes[0] == \"kgüp\"\n ? kgupData[0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\n })\n : checkboxes[1] == \"eak\"\n ? eakData[0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\n })\n : checkboxes[2] == \"üretim\"\n ? uretimData[0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\n })\n : \"\";\n var counter = 1;\n other_counter = 1;\n for (var i = 0; i < injections.length; i++) {\n i == 0\n ? (se.getOffsetRange(0, i).values = injections[i].name + \" (\" + injections[i].inj_type + \")\")\n : (se.getOffsetRange(0, counter - 1).values = injections[i].name + \" (\" + injections[i].inj_type + \")\");\n for (var j = 0; j < checkboxes.length; j++) {\n ce.getOffsetRange(0, counter).values = checkboxes[j];\n if (checkboxes[j] == \"kgüp\") {\n //console.log(injections.length)\n for (var m = 0; m < injections.length; m++) {\n if (injections[i].eic == kgupData[m][0]) {\n kgupData[m][1].forEach((data) => {\n ce.getOffsetRange(other_counter, counter).values = data;\n other_counter++;\n });\n break;\n }\n }\n }\n other_counter = 1;\n if (checkboxes[j] == \"eak\") {\n //console.log(injections.length)\n for (var m = 0; m < injections.length; m++) {\n if (injections[i].eic == eakData[m][0]) {\n eakData[m][1].forEach((data) => {\n ce.getOffsetRange(other_counter, counter).values = data;\n other_counter++;\n });\n break;\n }\n }\n }\n // if (checkboxes[j] == \"üretim\") {\n // for (var m = 0; m < injections.length; m++) {\n // if (injections[i].eic == uretimData[0][m][0]) {\n // ce.getOffsetRange(other_counter, counter).values = data;\n // other_counter++;\n // });\n // }\n // }\n // }\n other_counter = 1;\n j == checkboxes.length - 1 ? (counter += 5) : counter++;\n }\n }\n });\n}\n\nfunction eakRequest(url_added, endDate, org_eic, startDate, eic, index) {\n return new Promise(function(resolve, reject) {\n var toplam = [];\n var tarih = [];\n var saat = [];\n var santralTipi, santralTipiAtanan;\n var url = `${AppVariables.commonUrl +\n url_added}?endDate=${endDate}&organizationEIC=${org_eic}&startDate=${startDate}&uevcbEIC=${eic}`;\n //console.log(url)\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (this.status === 200) {\n var posts = JSON.parse(this.responseText);\n posts.body.aicList.forEach((data) => {\n toplam.push(data.toplam);\n tarih.push(data.tarih);\n saat.push(data.saat);\n santralTipi = santralTipiCheck(data);\n santralTipi != \"\" ? (santralTipiAtanan = santralTipi) : \"\";\n });\n AppVariables.totalEak.push(eic, toplam, tarih, saat);\n AppVariables.finalEak.push(AppVariables.totalEak);\n AppVariables.totalEak = [];\n var portfolio = Office.context.document.settings.get(index);\n var santraller = portfolio.injections;\n santraller.forEach((data) => {\n if ((data.inj_type == undefined || data.inj_type == \"\") && data.eic == eic && santralTipiAtanan != \"\") {\n data.inj_type = santralTipiAtanan;\n Office.context.document.settings.set(index, portfolio);\n persistSettings();\n }\n });\n resolve(AppVariables.finalEak);\n } else {\n reject(AppVariables.finalEak);\n }\n }\n };\n xhr.send();\n });\n}\n\nfunction uretimRequest(url_added, endDate, id, startDate, index) {\n return new Promise(function(resolve, reject) {\n var url = `${AppVariables.commonUrl + url_added}?endDate=${endDate}&powerPlantId=${id}&startDate=${startDate}`;\n //console.log(url)\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.onload = function() {\n if (this.status === 200) {\n var posts = JSON.parse(this.responseText);\n //console.log(posts.body)\n }\n resolve(AppVariables.finalUretim);\n };\n xhr.send();\n });\n}\n\nfunction removeSelected(index) {\n var checker = true;\n if (Office.context.document.settings.get(index).injections.length > 0) {\n var list_object,\n list_object2,\n temp = [];\n var valid_object = Office.context.document.settings.get(index);\n valid_object.injections.forEach((inj) => {\n list_object = document.getElementById(`${inj.id}`);\n if (list_object.checked == true) {\n list_object2 = document.getElementById(`${inj.id + \"l\"}`);\n list_object2.remove(list_object2.selectedIndex);\n checker = false;\n } else {\n temp.push(inj);\n }\n });\n if (!checker) {\n valid_object.injections = temp;\n Office.context.document.settings.set(index, valid_object);\n persistSettings();\n }\n } else return;\n}\n\nfunction clearList(index) {\n if (Office.context.document.settings.get(index).injections != 0) {\n var list_object;\n var valid_object = Office.context.document.settings.get(index);\n valid_object.injections.forEach((inj) => {\n list_object = document.getElementById(`${inj.id + \"l\"}`);\n list_object.remove(list_object.selectedIndex);\n });\n valid_object.injections = [];\n Office.context.document.settings.set(index, valid_object);\n persistSettings();\n } else return;\n}\n\nfunction showCheckboxes() {\n var checkboxes = document.getElementById(\"checkboxList\");\n if (!AppVariables.comboBoxExpanded) {\n checkboxes.style.display = \"block\";\n AppVariables.comboBoxExpanded = true;\n } else {\n checkboxes.style.display = \"none\";\n AppVariables.comboBoxExpanded = false;\n }\n}\n\nfunction addPortfoliosToDropdown(item) {\n var list = document.getElementById(\"portfolioSelect\");\n list.innerHTML += `\n <option id=\"${item}\" value=\"${item}\">\n ${Office.context.document.settings.get(item).portfolioName}\n </option>\n `;\n}\n\nfunction selectedPortfolioLoad() {\n var opt = document.getElementById(\"portfolioSelect\");\n var opts = opt.options[opt.selectedIndex].value;\n addPortfolioItem(Office.context.document.settings.get(opts), opts);\n var buton = document.getElementById(\"getDataButton\");\n AppVariables.comboBoxOptionsList == 0 ? (buton.disabled = true) : (buton.disabled = false);\n //console.log(opts);\n}\n\nfunction getOrganizationList() {\n var list;\n var organizationList = [];\n var url = `${AppVariables.commonUrl + \"production/dpp-organization?organizationName=\"}`;\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n var i = 0;\n xhr.onload = function() {\n if (this.status === 200) {\n var posts = JSON.parse(this.responseText);\n posts.body.organizations.forEach((obj) => {\n organizationList.push(\n new Organization(obj.organizationId, obj.organizationName, obj.organizationETSOCode, obj.injectionsList)\n );\n var temp = [];\n var url_inj = `${AppVariables.commonUrl +\n \"production/dpp-injection-unit-name?organizationEIC=\" +\n obj.organizationETSOCode}`;\n var xhr2 = new XMLHttpRequest();\n xhr2.open(\"GET\", url_inj, true);\n xhr2.onload = function() {\n if (this.status === 200) {\n var posts = JSON.parse(this.responseText);\n posts.body.injectionUnitNames.forEach((obj2) => {\n if (!document.getElementById(`${obj2.id}`)) {\n var injection = new Injection(obj2.id, obj2.name, obj2.eic, obj.organizationETSOCode, \"\");\n temp.push(injection);\n }\n });\n } else {\n console.log(\"error findInections\");\n }\n };\n xhr2.send();\n organizationList[i].injectionsList = temp;\n Office.context.document.settings.set(`${i}`, organizationList[i]);\n i++;\n });\n Office.context.document.settings.set(\"length\", i);\n } else {\n console.log(\"error getOrganizationList\");\n }\n };\n xhr.send();\n}\n\n// function findInjections() {\n// var id_name, founded, list;\n// list = document.querySelector(\"#injections_list\");\n// list.innerHTML = \"\";\n// organizationList.forEach((obj) => {\n// id_name = obj.organizationId;\n// founded = document.getElementById(`${id_name}`);\n// obj.injectionsList = [];\n// if (founded.checked == true) {\n// document.getElementById(\"checkAllInjections\").disabled = false;\n// var url = `https://seffaflik.epias.com.tr/transparency/service/production/dpp-injection-unit-name?organizationEIC=${\n// obj.organizationETSOCode\n// }`;\n// var xhr = new XMLHttpRequest();\n// xhr.open(\"GET\", url, true);\n// xhr.onload = function() {\n// if (this.status === 200) {\n// var posts = JSON.parse(this.responseText);\n// posts.body.injectionUnitNames.forEach((obj2) => {\n// if (!document.getElementById(`${obj2.id}`)) {\n// var injection = new Injection(obj2.id, obj2.name, obj2.eic);\n// obj.injectionsList.push(injection);\n// list.innerHTML += `\n// <li> <a> <input type=\"checkbox\" class=\"checkboxInjections\" id=${obj2.id}/> ${obj2.name} </a> </li>\n// `;\n// }\n// });\n// } else {\n// console.log(\"error findInections\");\n// }\n// };\n// xhr.send();\n// }\n// });\n// console.log(organizationList);\n// }\n" | |
language: typescript | |
template: | |
content: "<ul class=\"navbar\" id=\"main_navbar\">\n\t<li class=\"navbar\"><a href=\"#home\" onclick=\"show('page1','page2')\">Home</a></li>\n\t<li class=\"navbar\"><a href=\" #news\" onclick=\"show('page2','page1')\">Test</a></li>\n</ul>\n<div id=\"page1\">\n\t<form onsubmit=\"event.preventDefault();\" autocomplete=\"off\">\n\n\t\t<section class=\"ms-font-m\">\n\t\t\t<span>Organization List:</span><br>\n\t\t\t<input type=\"text\" id=\"searchBox\" onkeyup=\"searchFunction()\" placeholder=\"Search\">\n\t\t\t</section>\n\n\t\t\t<section class=\"samples ms-font-m\">\n\t\t\t\t<div id=\"organizations\" class=\"container\">\n\t\t\t\t\t<ul id=\"organizations_list\">\n\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<br>\n\t\t\t\t<button type=\"button\" onclick=\"findInjections()\" class=\"buttonContainer\">Select</button>\n\t\t\t\t<button type=\"button\" onclick=\"refresh()\" class=\"buttonContainer\">Refresh</button>\n\t\t\t</section>\n\n\t\t\t<section class=\"ms-font-m\">\n\t\t\t\t<p> Selected Organization's Injection Unit List: </p>\n\t\t\t\t<span>\n\t\t\t\t\t\tCheck All:\n\t\t\t\t\t\t<input type=\"checkbox\" id=\"checkAllInjections\" onClick=\"toggle(this)\" >\n\t\t\t\t\t</span>\n\t\t\t\t<div id=\"injections\" class=\"container\">\n\t\t\t\t\t<ul id=\"injections_list\">\n\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<br>\n\t\t\t\t</section>\n\n\t\t\t\t<section class=\"samples ms-font-m portfolioName\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\tPortfolio Name: <br>\n\t\t\t\t\t\t<input type=\"text\" id=\"portfolioSpace\">\n\t\t\t\t\t\t\n\t\t\t\t\t</span>\n\n\t\t\t\t</section>\n\t\t\t\t<div class=\"form-action-buttons\">\n\t\t\t\t\t<input type=\"submit\" id=\"createPortfolioButton\" onclick=\"createPortfolio();\" class=\"buttonContainer\" value=\"Create Portfolio\"/>\n\t\t\t\t</div>\n\t\t\t\t\t<div class=\"form-action-buttons\">\n\t\t\t\t\t\t<input type=\"submit\" style=\"display:none\" id=\"updatePortfolioButton\" class=\"buttonContainer\" onclick=\"saveAndUpdatePortfolio();\" value=\"Update Portfolio\"/>\n\t\t\t\t\t</div>\n\t</form>\n\n</div>\n<div id=\"page2\">\n\n\t<form onsubmit=\"event.preventDefault();selectedPortfolioLoad();\">\n\t\t<label for=\"portfolios\">Select portfolio: </label>\n\t\t<select name=\"portfolios\" id=\"portfolioSelect\">\n\t </select>\n\t\t<br><br>\n\t\t<input id=\"portfolioSelectButton\" type=\"submit\" value=\"Select Portfolio\" class=\"buttonContainer\">\n\t</form>\n\t\t<div id=\"portfolio-pages\">\n\n\t\t</div>\n</div>\n<div id=\"message\"> </div>" | |
language: html | |
style: | |
content: >- | |
section.samples { | |
margin-top: 5px; | |
margin-bottom: 10px; | |
} | |
section.samples .ms-Button, section.setup .ms-Button { | |
display: block; | |
margin-bottom: 5px; | |
margin-left: 20px; | |
min-width: 80px; | |
} | |
.portfolioName{ | |
margin-top: 0; | |
} | |
.container { border:2px solid #ccc; width:300px; height: 100px; overflow-y: | |
scroll; } | |
ul { | |
list-style:none | |
} | |
ul.navbar { | |
list-style-type: none; | |
margin: 0; | |
padding: 0; | |
overflow: hidden; | |
background-color: lightcyan | |
} | |
li.navbar { | |
float: left; | |
border: green; | |
} | |
li.navbar a { | |
display: block; | |
color: black; | |
text-align: center; | |
padding: 14px 16px; | |
text-decoration: none; | |
} | |
li.navbar a:hover { | |
background-color: green; | |
} | |
.multiSelect{ | |
width: 200px; | |
} | |
.selectBox{ | |
position:relative; | |
} | |
.selectBox select{ | |
font-weight: bold; | |
width: 100%; | |
} | |
.overSelect{ | |
position: absolute; | |
left: 0; right: 0; top: 0; left: 0; | |
} | |
#checkboxList { | |
display: none; | |
border: 6px #dadada solid; | |
} | |
#checkboxList label { | |
display:block; | |
} | |
#checkboxList label:hover { | |
background-color: #1e90ff; | |
} | |
.buttonContainer { | |
background-color: #e7e7e7; | |
color: black; | |
border: none; | |
padding: 8px 14px; | |
text-align: center; | |
text-decoration: none; | |
display: inline-block; | |
font-size: 12px; | |
transition-duration: 0.4s; | |
} | |
.buttonContainer:hover { | |
background-color: #4CAF50; /* Green */ | |
color: white; | |
} | |
.buttonContainer:disabled { | |
background: #dddddd; | |
color: gray; | |
} | |
#page2{ | |
margin:10px; | |
} | |
#time-block{ | |
margin-top: 20px; | |
margin-bottom: 20px; | |
} | |
#getDataButton{ | |
margin-top: 10px; | |
} | |
#portfolioSelectButton{ | |
margin-bottom: 10px; | |
} | |
language: css | |
libraries: | | |
https://appsforoffice.microsoft.com/lib/1/hosted/office.js | |
@types/office-js | |
office-ui-fabric-js@1.4.0/dist/css/fabric.min.css | |
office-ui-fabric-js@1.4.0/dist/css/fabric.components.min.css | |
core-js@2.4.1/client/core.min.js | |
@types/core-js | |
jquery@3.1.1 | |
@types/jquery@3.3.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment