Skip to content

Commit 15b8a2a

Browse files
author
Alex-At-Home
committed
[#73] Fixes #73, bug with using the active sheet instead of the table's sheet
1 parent 789960f commit 15b8a2a

File tree

5 files changed

+16
-19
lines changed

5 files changed

+16
-19
lines changed

src/server/services/ElasticsearchService.gs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ var ElasticsearchService_ = (function() {
341341

342342
// Also handle any global triggers (including queries):
343343
var globalTriggerRanges =
344-
TableRangeUtils_.getExternalTableRanges(ss, tableConfig, /*controlOnly*/true)
344+
TableRangeUtils_.getExternalTableRanges(activeRange.getSheet(), tableConfig, /*controlOnly*/true)
345345
modifiedOffsets = modifiedOffsets.concat(
346346
globalTriggerRanges.filter(function(triggerRange) {
347347
return TableRangeUtils_.doRangesIntersect(event.range, triggerRange)

src/server/services/TableService.gs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,15 @@ var TableService_ = (function(){
168168
*/
169169
function findTablesIntersectingRange(range, addRange) {
170170
var ss = SpreadsheetApp.getActive()
171-
var currRange = ss.getActiveRange()
172171
var tableMap = ManagementService_.listSavedObjects()
173172
var namedRangeMap = TableRangeUtils_.listTableRanges(ss, Object.keys(tableMap))
174173
var retVal = {}
175174
Object.keys(namedRangeMap).forEach(function(tableName) {
176175
var tableConfig = tableMap[tableName]
177-
var globalTriggerRanges =
178-
TableRangeUtils_.getExternalTableRanges(ss, tableConfig, /*controlOnly*/false)
179176
var namedRange = namedRangeMap[tableName]
177+
var globalTriggerRanges = TableRangeUtils_.getExternalTableRanges(
178+
namedRange.getRange().getSheet(), tableConfig, /*controlOnly*/false
179+
)
180180
var allRangesToTest = globalTriggerRanges.concat([ namedRange.getRange() ])
181181
for (rangeToTestIndex in allRangesToTest) {
182182
var rangeToTest = allRangesToTest[rangeToTestIndex]

src/server/utils/ElasticsearchRequestUtils.gs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,11 @@ var ElasticsearchRequestUtils_ = (function() {
125125
} else if ( //Global query, get from its external location:
126126
"global" == TableRangeUtils_.getJson(tableConfig, [ "common", "query", "source" ])
127127
) {
128-
var ss = SpreadsheetApp.getActive()
129128
var globalQueryRef = TableRangeUtils_.getJson(
130129
tableConfig, [ "common", "query", "global", "range_name" ]
131130
)
132131
var globalQueryRange = globalQueryRef ?
133-
TableRangeUtils_.getRangeFromName(ss, globalQueryRef) : null
132+
TableRangeUtils_.getRangeFromName(activeRange.getSheet(), globalQueryRef) : null
134133
if (globalQueryRange) {
135134
retVal.query = globalQueryRange.getCell(1, 1).getValue()
136135
}
@@ -170,8 +169,7 @@ var ElasticsearchRequestUtils_ = (function() {
170169
break
171170
}
172171
} else if (!testMode) { // Check for global status
173-
var ss = SpreadsheetApp.getActive()
174-
TableRangeUtils_.handleGlobalStatusInfo(ss, statusInfo, tableConfig)
172+
TableRangeUtils_.handleGlobalStatusInfo(activeRange.getSheet(), statusInfo, tableConfig)
175173
}
176174

177175
// Headers

src/server/utils/ElasticsearchResponseUtils.gs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,7 @@ var ElasticsearchResponseUtils_ = (function() {
705705

706706
/** Adds the error info the status, if necessary */
707707
function setQueryResponseInStatus_(range, statusLocation, errorString, tableConfig) {
708-
var ss = SpreadsheetApp.getActive()
709-
if (!TableRangeUtils_.handleGlobalStatusInfo(ss, errorString, tableConfig)) {
708+
if (!TableRangeUtils_.handleGlobalStatusInfo(range.getSheet(), errorString, tableConfig)) {
710709
range.getCell(statusLocation.row, statusLocation.col).setValue(errorString)
711710
}
712711
}

src/server/utils/TableRangeUtils.gs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@
357357
/** For a given table, returns a list of ranges that the table monitors
358358
* and treats like control changes
359359
*/
360-
function getExternalTableRanges(ss, tableConfig, controlOnly) {
360+
function getExternalTableRanges(sheet, tableConfig, controlOnly) {
361361
var globalControlTriggers =
362362
(TableRangeUtils_.getJson(tableConfig, [ "common", "global_control_triggers" ]) || [])
363363
var globalContentTriggers = !controlOnly ?
@@ -369,7 +369,7 @@
369369
globalTriggers = globalTriggers.concat([ globalQuery ])
370370
}
371371
return globalTriggers.map(function(rangeOrNotation) {
372-
return getRangeFromName(ss, rangeOrNotation)
372+
return getRangeFromName(sheet, rangeOrNotation)
373373
}).filter(function(range) {
374374
return range != null
375375
})
@@ -378,30 +378,30 @@
378378
/** Returns the range from a range notation
379379
* TODO: needs to be able to handle named ranges (see getJsonLookup)
380380
*/
381-
function getRangeFromName(ss, rangeOrNotation) {
382-
var isNotation =
383-
rangeOrNotation.indexOf(":") >= 0 || /^[A-Z]+[0-9]+$/.exec(rangeOrNotation)
381+
function getRangeFromName(sheet, rangeOrNotation) {
384382
var isFullNotation = rangeOrNotation.indexOf("!") >= 0
383+
var isNotation = isFullNotation ||
384+
(rangeOrNotation.indexOf(":") >= 0 || /^[A-Z]+[0-9]+$/.exec(rangeOrNotation))
385385

386386
return isNotation ?
387387
(isFullNotation ?
388-
ss.getRange(rangeOrNotation)
388+
sheet.getParent().getRange(rangeOrNotation)
389389
:
390-
ss.getActiveSheet().getRange(rangeOrNotation)
390+
sheet.getRange(rangeOrNotation)
391391
)
392392
: null //(see above: also support named ranges, cf getJsonLookup)
393393
}
394394

395395
/** Utility function to write global status info out - returns true iff status _is_ global */
396-
function handleGlobalStatusInfo(ss, statusInfo, tableConfig) {
396+
function handleGlobalStatusInfo(sheet, statusInfo, tableConfig) {
397397
if ( //Global query, get from its external location:
398398
"global" == TableRangeUtils_.getJson(tableConfig, [ "common", "status", "position" ])
399399
) {
400400
var globalSourceRef = TableRangeUtils_.getJson(
401401
tableConfig, [ "common", "status", "global", "range_name" ]
402402
)
403403
var globalSourceRange = globalSourceRef ?
404-
TableRangeUtils_.getRangeFromName(ss, globalSourceRef) : null
404+
TableRangeUtils_.getRangeFromName(sheet, globalSourceRef) : null
405405
if (globalSourceRange) {
406406
globalSourceRange.getCell(1, 1).setValue(statusInfo)
407407
return true

0 commit comments

Comments
 (0)