Created
August 14, 2020 19:35
-
-
Save brkayaoglu/73159344ccb136ad2ed6ba5300884be3 to your computer and use it in GitHub Desktop.
Performs a basic Excel API call using plain JavaScript & Promises.
This file contains hidden or 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: "if (Office.context.document.settings.get(\"getDataFromWeb\") == null) {\n //console.log(\"first run\");\n getOrganizationList();\n Office.context.document.settings.set(\"getDataFromWeb\", true);\n persistSettings();\n} //else console.log(\"second run\")\n\nlistOrganizations();\ngetFirstTimeData();\n\nvar updateFlag = false;\nvar btn = document.getElementById(\"portfolioSelectButton\");\nOffice.context.document.settings.get(\"portfolioLength\") == 0 ? (btn.disabled = true) : (btn.disabled = false);\n\nvar i, organization_list, organization_id, organization_name;\n\nfunction listOrganizations() {\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\nvar selectedInjections = [];\n\nfunction findInjections() {\n var id_name, founded, list;\n document.getElementById(\"checkAllInjections\").checked = false;\n list = document.querySelector(\"#injections_list\");\n list.innerHTML = \"\";\n 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 selectedInjections.push(obj);\n });\n }\n }\n}\n\nfunction refresh() {\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 < selectedInjections.length; i++) {\n foundedInjection = document.getElementById(`${selectedInjections[i].id}`);\n if (foundedInjection.checked) {\n checkedInjections.push(selectedInjections[i]);\n //console.log(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(newPortfolio);\n Portfolio.portfolioCount++;\n 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 var btn = document.getElementById(\"portfolioSelectButton\");\n Office.context.document.settings.get(\"portfolioLength\") == 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 getFirstTimeData() {\n document.getElementById(\"page2\").style.display = \"none\";\n getPortfoliosFromOffice();\n}\n\nfunction checkButtonsState() {\n var createButton = document.getElementById(\"createPortfolioButton\");\n var updateButton = document.getElementById(\"updatePortfolioButton\");\n if (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\nvar global_index_for_item;\n\nfunction updatePortfolio(index) {\n global_index_for_item = index;\n var navbar = document.getElementById(\"main_navbar\");\n navbar.style.display = \"none\";\n selectedInjections = [];\n 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 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 < selectedInjections.length; i++) {\n foundedInjection = document.getElementById(`${selectedInjections[i].id}`);\n if (foundedInjection.checked) {\n checkedInjections.push(selectedInjections[i]);\n //console.log(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(global_index_for_item);\n updatedObject.injections = checkedInjections;\n updatedObject.portfolioName = portfolioName;\n saveUpdatedPortfolioToOffice(global_index_for_item, updatedObject);\n updateFlag = false;\n checkButtonsState();\n var navbar = document.getElementById(\"main_navbar\");\n navbar.style.display = \"block\";\n 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(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}')\">Remove Selected</button>\n\t\t\t<button type=\"button\" onclick=\"clearList('${index}')\">Clear List</button>\n <button type=\"button\" onclick=\"removePortfolio('${index}');\">Remove Portfolio</button>\n\t\t\t<button type=\"button\" onclick=\"updatePortfolio('${index}');\">Update Portfolio</button>\n <br>\n Select Time Interval:<br>\n Start Date:<input type=\"date\" value=\"2020-07-14\" id=\"startDate\">\n End Date:<input type=\"date\" value=\"2020-08-13\" id=\"endDate\">\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\n </div>\n </div>\n <input type=\"submit\" onclick=\"event.preventDefault();getDataAndStore('${index}');\" 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\nvar optionsList = [];\n\nfunction optionHeaderSet(item) {\n var optHeader = document.getElementById(\"optionHeader\");\n item.checked ? optionsList.push(item.name) : (optionsList = optionsList.filter((e) => e !== item.name));\n optionsList.length == 0 ? (optHeader.innerHTML = \"Select an option\") : (optHeader.innerHTML = \"\");\n optionsList.forEach((item) => (optHeader.innerHTML += `${item}, `));\n}\n\nvar globalCheckboxes = [];\nvar globalInjections = [];\n\nvar scope = false;\n\nconst getDataAndStore = async (index) => {\n var requestedPortfolio = Office.context.document.settings.get(index);\n //console.log(requestedPortfolio)\n globalCheckboxes = [];\n globalInjections = [];\n finalKgup = [], finalEak = [], 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 optionsList = [];\n var arrayOfPromisesKgup = [],\n arrayOfPromisesEak = [],\n arrayOfPromisesUretim = [];\n requestedPortfolio.injections.forEach((inj) => {\n 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 globalCheckboxes[0] = \"kgüp\";\n }\n if (eakCheckbox.checked) {\n arrayOfPromisesEak.push(eakRequest(\"production/aic\", endDate, inj.org_eic, startDate, inj.eic, index));\n 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 globalCheckboxes[2] = \"üretim\";\n }\n });\n Promise.all(arrayOfPromisesKgup).then((resultsKgup) => {\n Promise.all(arrayOfPromisesEak).then((resultsEak) => {\n Promise.all(arrayOfPromisesUretim).then((resultsUretim) => {\n if (globalInjections != [] && (kgupCheckbox.checked || eakCheckbox.checked || uretimCheckbox.checked)) {\n run(globalInjections, globalCheckboxes, resultsKgup, resultsEak, resultsUretim);\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\nvar totalKgup = [];\nvar finalKgup = [];\nvar totalEak = [];\nvar finalEak = [];\nvar totalUretim = [];\nvar finalUretim = [];\n\nfunction mycall(data) {\n finalKgup = data;\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 = `https://seffaflik.epias.com.tr/transparency/service/${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 totalKgup.push(eic, toplam, tarih, saat);\n finalKgup.push(totalKgup);\n totalKgup = [];\n var portfolio = Office.context.document.settings.get(index);\n var santraller = portfolio.injections;\n santraller.forEach((data) => {\n if (\n (data.santral_tipi == undefined || data.santral_tipi == \"\") &&\n data.eic == eic &&\n santralTipiAtanan != \"\"\n ) {\n \n data.santral_tipi = santralTipiAtanan;\n Office.context.document.settings.set(index, portfolio);\n persistSettings();\n }\n });\n resolve(finalKgup);\n } else {\n reject(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(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\" ? kgupData[0][0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\n }) : checkboxes[1] == \"eak\" ? eakData[0][0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\n }) : checkboxes[2] == \"üretim\" ? uretimData[0][0][2].forEach((obj) => {\n tr.getOffsetRange(other_counter, 0).values = dateFormatter(obj);\n other_counter++;\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].santral_tipi + \")\")\n : (se.getOffsetRange(0, counter - 1).values = injections[i].name + \" (\" + injections[i].santral_tipi + \")\");\n for (var j = 0; j < checkboxes.length; j++) {\n ce.getOffsetRange(0, counter).values = checkboxes[j];\n if (checkboxes[j] == \"kgüp\") {\n for(var m = 0; m < injections.length; m++){\n if(injections[i].eic == kgupData[0][m][0]){\n kgupData[0][m][1].forEach((data) => {\n ce.getOffsetRange(other_counter, counter).values = data;\n other_counter++;\n });\n }\n }\n }\n other_counter = 1;\n if (checkboxes[j] == \"eak\") {\n for (var m = 0; m < injections.length; m++) {\n if (injections[i].eic == eakData[0][m][0]) {\n eakData[0][m][1].forEach((data) => {\n ce.getOffsetRange(other_counter, counter).values = data;\n other_counter++;\n });\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 += 10) : 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 = `https://seffaflik.epias.com.tr/transparency/service/${url_added}?endDate=${endDate}&organizationEIC=${org_eic}&startDate=${startDate}&uevcbEIC=${eic}`;\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 totalEak.push(eic, toplam, tarih, saat);\n finalEak.push(totalEak);\n totalEak = [];\n var portfolio = Office.context.document.settings.get(index);\n var santraller = portfolio.injections;\n santraller.forEach((data) => {\n if (\n (data.santral_tipi == undefined || data.santral_tipi == \"\") &&\n data.eic == eic &&\n santralTipiAtanan != \"\"\n ) {\n data.santral_tipi = santralTipi;\n Office.context.document.settings.set(index, portfolio);\n persistSettings();\n }\n });\n resolve(finalEak);\n }else{\n reject(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 = `https://seffaflik.epias.com.tr/transparency/service/${url_added}?endDate=${endDate}&powerPlantId=${id}&startDate=${startDate}`;\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 }\n resolve(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\nvar expanded = false;\n\nfunction showCheckboxes() {\n var checkboxes = document.getElementById(\"checkboxList\");\n if (!expanded) {\n checkboxes.style.display = \"block\";\n expanded = true;\n } else {\n checkboxes.style.display = \"none\";\n expanded = false;\n }\n}\n\nfunction onFormSubmit() {}\n\nfunction readFormData() {}\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 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 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 //console.log(opts);\n}\n\nclass Injection {\n constructor(id, name, eic, org_eic, santral_tipi) {\n this.id = id;\n this.name = name;\n this.eic = eic;\n this.org_eic = org_eic;\n this.santral_tipi = santral_tipi;\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 = 0;\n constructor(portfolioName, injections) {\n this.portfolioName = portfolioName;\n this.injections = injections;\n }\n}\n\nvar list;\nvar organizationList = [];\n\nfunction getOrganizationList() {\n var url = \"https://seffaflik.epias.com.tr/transparency/service/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 = `https://seffaflik.epias.com.tr/transparency/service/production/dpp-injection-unit-name?organizationEIC=${\n obj.organizationETSOCode\n }`;\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();onFormSubmit();\" 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()\">Select</button>\n\t\t\t\t<button type=\"button\" onclick=\"refresh()\">Refresh</button>\n\t\t\t</section>\n\n\t\t\t<section class=\"samples 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\">\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();\" 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\" 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\">\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: 20px; | |
} | |
section.samples .ms-Button, section.setup .ms-Button { | |
display: block; | |
margin-bottom: 5px; | |
margin-left: 20px; | |
min-width: 80px; | |
} | |
.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; | |
} | |
language: css | |
libraries: | | |
https://appsforoffice.microsoft.com/lib/1/hosted/office.js | |
@types/office-js | |
[email protected]/dist/css/fabric.min.css | |
[email protected]/dist/css/fabric.components.min.css | |
[email protected]/client/core.min.js | |
@types/core-js | |
[email protected] | |
@types/[email protected] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment