diff --git a/gs/data.gs b/gs/data.gs index 41f1ad6c7..e659a7ec0 100644 --- a/gs/data.gs +++ b/gs/data.gs @@ -32,26 +32,26 @@ function refreshParsed() { var columnDataTopCell = sParsed.getRange(columnIndex + "2"); switch (urlTypes[i]) { case "viewUrl": - columnDataTopCell.setValue("=createHtmlViewLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"viewUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "addUrl": var viewUrlColumnIndex = getColIndex(sData, "viewUrl"); - columnDataTopCell.setValue("=createHtmlAddLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"addUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "homeUrl": - columnDataTopCell.setValue("=createHtmlHomeLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"homeUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "forumUrl": - columnDataTopCell.setValue("=createHtmlForumLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"forumUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "issuesUrl": - columnDataTopCell.setValue("=createHtmlIssuesLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"issuesUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "email": - columnDataTopCell.setValue("=createHtmlEmailLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"email\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "donateUrl": - columnDataTopCell.setValue("=createHtmlDonateLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + columnDataTopCell.setValue("=createHtmlArrayUrl(\"donateUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; default: } @@ -70,7 +70,7 @@ function refreshPublic() { var columnDataTopCell = sPublic.getRange(columnIndex + "2"); switch (publicFields[i]) { case "list": - columnDataTopCell.setValue("=createHtmlListNameArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"\")))"); + columnDataTopCell.setValue("=createHtmlArrayList(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"\")))"); break; case "tags": columnDataTopCell.setValue("=ARRAYFORMULA(\"\"&INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"\"))&\"\")"); @@ -86,7 +86,7 @@ function refreshPublic() { columnDataTopCell.setValue("=ARRAYFORMULA(IF(Parsed!A2:A=\"\",\"\",\"

\"&Parsed!A2:A&Parsed!B2:B&Parsed!C2:C&Parsed!D2:D&Parsed!E2:E&Parsed!F2:F&Parsed!G2:G&\"

\"))"); break; case "related": - columnDataTopCell.setValue("=createHtmlRelatedLinkArray(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"\")))"); + columnDataTopCell.setValue("=createHtmlArrayRelated(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"\")))"); break; default: } diff --git a/gs/html-factory.gs b/gs/html-factory.gs new file mode 100644 index 000000000..01b2ce07e --- /dev/null +++ b/gs/html-factory.gs @@ -0,0 +1,74 @@ +function createHtmlArrayUrl(htmlType, url, listName) { + if (url instanceof Array) { + for (var i in url) { + url[i] = createHtmlArrayUrl(htmlType, url[i], listName[i]); + } + return url; + } else { + if (url && url != "#N/A") { + switch (htmlType) { + case "viewUrl": + return "View"; + break; + case "addUrl": + return "Add"; + break; + case "homeUrl": + return "Home"; + break; + case "forumUrl": + return "Forum"; + break; + case "issuesUrl": + return "Issues"; + break; + case "email": + return "Email"; + break; + case "donateUrl": + return "Donate"; + break; + default: + return ""; + } + } else { + return ""; + } + } +} + +function createHtmlArrayList(list) { + if (list instanceof Array) { + for (var i in list) { + list[i] = createHtmlArrayList(list[i]); + } + return list; + } else { + if (list) { + return "

" + list + "

"; + } else { + return ""; + } + } +} + +function createHtmlArrayRelated(related) { + if (related instanceof Array) { + for (var i in related) { + related[i] = createHtmlArrayRelated(related[i]); + } + return related; + } else { + if (!related) { + return ""; + } else { + var relatedArray = related.split(','); + var relatedHtml = ""; + return relatedHtml; + } + } +} \ No newline at end of file diff --git a/gs/link-factory.gs b/gs/link-factory.gs deleted file mode 100644 index ab406c99a..000000000 --- a/gs/link-factory.gs +++ /dev/null @@ -1,140 +0,0 @@ -function createHtmlViewLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlViewLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "View"; - } else { - return ""; - } - } -} - -function createHtmlAddLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlAddLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Add"; - } else { - return ""; - } - } -} - -function createHtmlHomeLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlHomeLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Home"; - } else { - return ""; - } - } -} - -function createHtmlForumLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlForumLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Forum"; - } else { - return ""; - } - } -} - -function createHtmlIssuesLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlIssuesLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Issues"; - } else { - return ""; - } - } -} - -function createHtmlEmailLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlEmailLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Email"; - } else { - return ""; - } - } -} - -function createHtmlDonateLinkArray(url, listName) { - if (url instanceof Array) { - for (var i in url) { - url[i] = createHtmlDonateLinkArray(url[i], listName[i]); - } - return url; - } else { - if (url && url != "#N/A") { - return "Donate"; - } else { - return ""; - } - } -} - -function createHtmlRelatedLinkArray(related) { - if (related instanceof Array) { - for (var i in related) { - related[i] = createHtmlRelatedLinkArray(related[i]); - } - return related; - } else { - if (!related) { - return ""; - } else { - var relatedArray = related.split(','); - var relatedHtml = ""; - return relatedHtml; - } - } -} - -function createHtmlListNameArray(listName) { - if (listName instanceof Array) { - for (var i in listName) { - listName[i] = createHtmlListNameArray(listName[i]); - } - return listName; - } else { - if (listName) { - return "

" + listName + "

"; - } else { - return ""; - } - } -} \ No newline at end of file diff --git a/gs/ui.gs b/gs/ui.gs index d4a13ea9d..81db52779 100644 --- a/gs/ui.gs +++ b/gs/ui.gs @@ -7,8 +7,7 @@ var sParsed = ss.getSheetByName("Parsed"); var sPublic = ss.getSheetByName("Public"); function onOpen() { - var ui = SpreadsheetApp.getUi(); - ui.createMenu('Refresh').addItem('Refresh All', 'refreshAll').addSeparator().addItem('Refresh Data', 'refreshData').addItem('Refresh FilScore', 'refreshFilScores').addToUi(); + SpreadsheetApp.getUi().createMenu('Refresh').addItem('Refresh All', 'refreshAll').addSeparator().addItem('Refresh Data', 'refreshData').addItem('Refresh FilScore', 'refreshFilScores').addToUi(); } function refreshAll() { diff --git a/gs/utilities.gs b/gs/utilities.gs index b7f3fa26d..0b227cc14 100644 --- a/gs/utilities.gs +++ b/gs/utilities.gs @@ -88,7 +88,7 @@ function moveColumn(sheet, iniCol, finCol) { function arrayMoveColumn(data, from, to) { if (!(data instanceof Array && data[0] instanceof Array)) throw new TypeError('need 2d array'); if (from >= data[0].length || to >= data[0].length) throw new Error('index out of bounds'); - for (var row = 0; row < data.length; row++) { + for (var row = 0, dataLength = data.length; row < dataLength; row++) { var temp = data[row].splice(from, 1); data[row].splice(to, 0, temp[0]); }