Skip to content

Instantly share code, notes, and snippets.

@brkayaoglu
Created August 14, 2020 19:35
Show Gist options
  • Save brkayaoglu/73159344ccb136ad2ed6ba5300884be3 to your computer and use it in GitHub Desktop.
Save brkayaoglu/73159344ccb136ad2ed6ba5300884be3 to your computer and use it in GitHub Desktop.
Performs a basic Excel API call using plain JavaScript & Promises.
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
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