<commit_before><command-bar>
    <command displayText="{{ 'newFunction' | translate }}"
             iconUrl="images/add.svg"
             (click)="onNewFunctionClick()"></command>
</command-bar>

<div class="list-collection-container">
    <img src="images/function_f.svg" />
    <span class="text-level1-heading">{{ 'functions' | translate }}</span><i *ngIf="isLoading" class="fa fa-refresh fa-spin fa-fw"></i>

    <div class="search-box-container">
        <search-box (onInputChange)="searchChanged($event)"
                    (onClear)="searchCleared()"
                    [placeholder]="'functionsList_searchFunctions' | translate">
        </search-box>
    </div>
    <tbl [items]="functions" #table="tbl">
        <tr>
            <th><tbl-th name="title">{{ '_name' | translate }}</tbl-th></th>
            <th><tbl-th name="functionInfo.config.disabled">{{ 'enabled' | translate }}</tbl-th></th>
			<th class="icon"></th>
        </tr>

        <tr *ngFor="let item of table.items">
            <td><span class="link" (click)="clickRow(item)">{{item.title}}</span></td>
            <td>
                <label>
                    <input type="checkbox" [checked]="!item.functionInfo.config.disabled" (change)="enableChange(item)" />
                    <span *ngIf="item.functionInfo.config.disabled" class="enabled">
                        {{ 'disabled' | translate }}
                    </span>
                    <span *ngIf="!item.functionInfo.config.disabled" class="enabled">
                        {{ 'enabled' | translate }}
                    </span>
                </label>
            </td>
            <td class="icon">
                <img src="images/delete.svg" (click)="clickDelete(item)" />
            </td>
        </tr><commit_msg>Add fnWriteAccess directive to the functions list component<commit_after><command-bar>
    <command displayText="{{ 'newFunction' | translate }}"
             iconUrl="images/add.svg"
             (click)="onNewFunctionClick()"></command>
</command-bar>

<div class="list-collection-container">
    <img src="images/function_f.svg" />
    <span class="text-level1-heading">{{ 'functions' | translate }}</span><i *ngIf="isLoading" class="fa fa-refresh fa-spin fa-fw"></i>

    <div class="search-box-container">
        <search-box (onInputChange)="searchChanged($event)"
                    (onClear)="searchCleared()"
                    [placeholder]="'functionsList_searchFunctions' | translate">
        </search-box>
    </div>
    <tbl [items]="functions" #table="tbl">
        <tr>
            <th><tbl-th name="title">{{ '_name' | translate }}</tbl-th></th>
            <th><tbl-th name="functionInfo.config.disabled">{{ 'enabled' | translate }}</tbl-th></th>
			<th class="icon"></th>
        </tr>

        <tr *ngFor="let item of table.items">
            <td><span class="link" (click)="clickRow(item)">{{item.title}}</span></td>
            <td>
                <label>
                    <input [fnWriteAccess]="functionApp" type="checkbox" [checked]="!item.functionInfo.config.disabled" (change)="enableChange(item)" />
                    <span *ngIf="item.functionInfo.config.disabled" class="enabled">
                        {{ 'disabled' | translate }}
                    </span>
                    <span *ngIf="!item.functionInfo.config.disabled" class="enabled">
                        {{ 'enabled' | translate }}
                    </span>
                </label>
            </td>
            <td class="icon">
                <img src="images/delete.svg" (click)="clickDelete(item)" />
            </td>
        </tr>
{'fraction_non_alphanumeric': 0.18314917127071823, 'fraction_numerical': 0.0005524861878453039, 'mean_word_length': 2.097519247219846, 'pattern_counts': {'":': 0, '<': 93, '<?xml version=': 0, '>': 93, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3024082', 'n_tokens_mistral': 1053, 'n_tokens_neox': 1009, 'n_words': 173}