mirror of
				https://github.com/gristlabs/grist-core.git
				synced 2025-06-13 20:53:59 +00:00 
			
		
		
		
	limit exception more tightly to seed rules
This commit is contained in:
		
							parent
							
								
									7f7bf61b4b
								
							
						
					
					
						commit
						bddd9df1fc
					
				@ -1084,6 +1084,16 @@ abstract class ObsRuleSet extends Disposable {
 | 
			
		||||
  public getCustomRules(): ObsRulePart[] {
 | 
			
		||||
    return this._body.get().filter(rule => !rule.isBuiltInOrEmpty());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * If the set applies to a special column, return its name.
 | 
			
		||||
   */
 | 
			
		||||
  public getSpecialColumn(): string|undefined {
 | 
			
		||||
    if (this._ruleSet?.tableId === SPECIAL_RULES_TABLE_ID &&
 | 
			
		||||
        this._ruleSet.colIds.length === 1) {
 | 
			
		||||
      return this._ruleSet.colIds[0];
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ColumnObsRuleSet extends ObsRuleSet {
 | 
			
		||||
@ -1817,9 +1827,12 @@ class ObsRulePart extends Disposable {
 | 
			
		||||
  private _warnInvalidColIds(colIds?: string[]) {
 | 
			
		||||
    if (!colIds || !colIds.length) { return false; }
 | 
			
		||||
    const allValid = new Set(this._ruleSet.getValidColIds());
 | 
			
		||||
    // Don't check column validity if we don't have any.
 | 
			
		||||
    // For example, the seed rule has no columns.
 | 
			
		||||
    if (allValid.size === 0) { return false; }
 | 
			
		||||
    const specialColumn = this._ruleSet.getSpecialColumn();
 | 
			
		||||
    if (specialColumn === 'SeedRule') {
 | 
			
		||||
      // We allow seed rules to refer to columns without checking
 | 
			
		||||
      // them (until the seed rules are used).
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
    const invalid = colIds.filter(c => !allValid.has(c));
 | 
			
		||||
    if (invalid.length > 0) {
 | 
			
		||||
      return `Invalid columns: ${invalid.join(', ')}`;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user