<commit_before><div fxLayout="row" fxLayoutGap="10px">
  <form nz-form [nzLayout]="'inline'">
    <nz-form-item>
      <nz-form-label>{{'DESYNTH.Job' | translate}}</nz-form-label>
      <nz-form-control>
        <nz-select [ngModel]="job$.value" nzShowSearch class="job-filter"
                   [nzPlaceHolder]="'SIMULATOR.CONFIGURATION.Select_job' | translate"
                   name="job"
                   (ngModelChange)="job$.next($event)">
          <nz-option *ngFor="let job of jobList" [nzValue]="job.id" [nzLabel]="job.id | jobAbbr | i18n" nzCustomContent>
            <img src="https://garlandtools.org/db/images/{{job.abbreviation}}.png" alt="" class="job-icon">
            {{job.id | jobAbbr | i18n}}
          </nz-option>
        </nz-select>
      </nz-form-control>
    </nz-form-item>
    <nz-form-item>
      <nz-form-label>{{'DESYNTH.Level' | translate}}</nz-form-label>
      <nz-form-control>
        <input type="number" nz-input name="minCraft" [ngModel]="level$ | async"
               (ngModelChange)="level$.next($event)" min="0"/>
      </nz-form-control>
    </nz-form-item>
    <nz-form-item>
      <nz-form-control>
        <button nz-button nzType="primary" [disabled]="((job$ | async) === null) || ((level$ | async) === null)"
                (click)="search$.next()">
          <i nz-icon type="search"></i>{{'GC_SUPPLY.Search' | translate}}
        </button>
      </nz-form-control>
    </nz-form-item>
  </form>
</div>
<div fxLayout="column" *ngIf="level$ | async as userDesynthLevel">
  <div *ngFor="let row of results$ | async; let odd = odd" fxLayout="row"
       class="result-row"
       [class.odd]="odd"
       fxLayoutAlign="flex-start center">
    <div fxLayout="row" fxLayoutGap="5px" fxLayout.lt-md="column"
         fxLayoutAlign="space-between center"
         fxFlex="1 1 auto"
         fxLayoutAlign.lt-md="center center">
      <div fxLayout="row" fxLayoutAlign="flex-start center" fxLayoutGap="10px">
        <app-item-icon [width]="32" [itemId]="+row.itemId" [icon]="row.icon | xivapiIcon"></app-item-icon>
        <div fxLayout="column" fxLayoutGap="5px">
          <div fxLayout="row" fxLayoutGap="5px">
            <div>{{+row.itemId | itemName | i18n}}</div>
            <app-marketboard-icon [itemId]="+row.itemId" [showHistory]="true"></app-marketboard-icon>
          </div>
          <div>
            <nz-tag *ngIf="userDesynthLevel > row.dlvl"
                    nzColor="darkgreen">{{'DESYNTH.TAGS.Higher_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel > row.dlvl" nzColor="#f50">{{'DESYNTH.TAGS.Lower_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel === row.dlvl"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Good_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel === row.dlvl"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Good_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel < row.dlvl"
                    nzColor="#f50">{{'DESYNTH.TAGS.Lower_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel < row.dlvl"
                    nzColor="darkgreen">{{'DESYNTH.TAGS.Higher_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score >= 100" nzColor="darkgreen">{{'DESYNTH.TAGS.Very_common' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score < 100 && row.score >= 50"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Common' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score < 50" nzColor="#f50">{{'DESYNTH.TAGS.Rare' | translate}}</nz-tag>
          </div>
        </div>
      </div>
      <div fxLayout="row" fxLayoutGap="10px" fxLayout.lt-md="column" fxLayoutGap.lt-md="10px"
           fxLayoutAlign.lt-md="center center" nz-row class="inputs-container">
        <div nz-col [nzXs]="24" [nzMd]="15" class="input-box" fxLayout="row" fxLayoutAlign="center center">
          <nz-input-group [nzCompact]="true" class="amount-input">
            <input type="number" [(ngModel)]="row.amount" nz-input>
          </nz-input-group>
        </div>
        <div nz-col [nzXs]="24" [nzMd]="9" class="actions" fxLayout="row" fxLayoutGap="5px"
             fxLayoutAlign="center center">
          <button nz-button [nzType]="'primary'" [nzShape]="'circle'" nz-tooltip
                  [nzTitle]="'ITEMS.Add_to_list' | translate" (click)="addItemsToList([row])">
            <i nz-icon type="plus"></i>
          </button>
          <button nz-button [nzType]="'primary'" [nzShape]="'circle'" nz-tooltip
                  [nzTitle]="'Quick_list_create' | translate" (click)="createQuickList(row)">
            <i nz-icon type="clock-circle-o"></i>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>
<nz-pagination [nzPageIndex]="page$ | async" (nzPageIndexChange)="page$.next($event)" [nzTotal]="totalLength"
               *ngIf="totalLength > 0"
               [nzPageSize]="pageSize" fxLayout="row"
               fxLayoutAlign="center center"></nz-pagination>

<app-fullpage-message *ngIf="pristine" height="300px">
  {{'DESYNTH.Intro' | translate}}
</app-fullpage-message>
<app-page-loader *ngIf="loading" [message]="'DESYNTH.Loading_message' | translate"></app-page-loader>

<ng-template #notificationRef let-notification>
  <div class="ant-notification-notice-content ant-notification-notice-with-icon">
    <span class="ant-notification-notice-icon"><i nz-icon type="check-circle"
                                                  class="ant-notification-notice-icon-success"></i></span>
    <div>
      <div class="ant-notification-notice-message">{{'COMMON.Success' | translate}}</div>
      <div class="ant-notification-notice-description">
        <span *ngIf="itemsAdded === 1">{{'Recipe_Added' | translate: { listname: modifiedList.name } }}</span>
        <span *ngIf="itemsAdded !== 1">{{'Recipes_Added' | translate: {
          itemcount: itemsAdded,
          listname: modifiedList.name
        } }}</span>
      </div>
      <span class="ant-notification-notice-btn">
            <a nz-button nzType="primary" (click)="notification.close();" routerLink="/list/{{modifiedList.$key}}">
              <span>{{'Open' | translate}}</span>
            </a>
          </span>
    </div>
  </div>
</ng-template>
<commit_msg>feat(desynth): added database link to desynth item results<commit_after><div fxLayout="row" fxLayoutGap="10px">
  <form nz-form [nzLayout]="'inline'">
    <nz-form-item>
      <nz-form-label>{{'DESYNTH.Job' | translate}}</nz-form-label>
      <nz-form-control>
        <nz-select [ngModel]="job$.value" nzShowSearch class="job-filter"
                   [nzPlaceHolder]="'SIMULATOR.CONFIGURATION.Select_job' | translate"
                   name="job"
                   (ngModelChange)="job$.next($event)">
          <nz-option *ngFor="let job of jobList" [nzValue]="job.id" [nzLabel]="job.id | jobAbbr | i18n" nzCustomContent>
            <img src="https://garlandtools.org/db/images/{{job.abbreviation}}.png" alt="" class="job-icon">
            {{job.id | jobAbbr | i18n}}
          </nz-option>
        </nz-select>
      </nz-form-control>
    </nz-form-item>
    <nz-form-item>
      <nz-form-label>{{'DESYNTH.Level' | translate}}</nz-form-label>
      <nz-form-control>
        <input type="number" nz-input name="minCraft" [ngModel]="level$ | async"
               (ngModelChange)="level$.next($event)" min="0"/>
      </nz-form-control>
    </nz-form-item>
    <nz-form-item>
      <nz-form-control>
        <button nz-button nzType="primary" [disabled]="((job$ | async) === null) || ((level$ | async) === null)"
                (click)="search$.next()">
          <i nz-icon type="search"></i>{{'GC_SUPPLY.Search' | translate}}
        </button>
      </nz-form-control>
    </nz-form-item>
  </form>
</div>
<div fxLayout="column" *ngIf="level$ | async as userDesynthLevel">
  <div *ngFor="let row of results$ | async; let odd = odd" fxLayout="row"
       class="result-row"
       [class.odd]="odd"
       fxLayoutAlign="flex-start center">
    <div fxLayout="row" fxLayoutGap="5px" fxLayout.lt-md="column"
         fxLayoutAlign="space-between center"
         fxFlex="1 1 auto"
         fxLayoutAlign.lt-md="center center">
      <div fxLayout="row" fxLayoutAlign="flex-start center" fxLayoutGap="10px">
        <app-item-icon [width]="32" [itemId]="+row.itemId" [icon]="row.icon | xivapiIcon"></app-item-icon>
        <div fxLayout="column" fxLayoutGap="5px">
          <div fxLayout="row" fxLayoutGap="5px">
            <div>{{+row.itemId | itemName | i18n}}</div>
            <app-marketboard-icon [itemId]="+row.itemId" [showHistory]="true"></app-marketboard-icon>
            <app-db-button type="item" [id]="+row.itemId"></app-db-button>
          </div>
          <div>
            <nz-tag *ngIf="userDesynthLevel > row.dlvl"
                    nzColor="darkgreen">{{'DESYNTH.TAGS.Higher_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel > row.dlvl" nzColor="#f50">{{'DESYNTH.TAGS.Lower_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel === row.dlvl"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Good_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel === row.dlvl"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Good_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel < row.dlvl"
                    nzColor="#f50">{{'DESYNTH.TAGS.Lower_chances' | translate}}</nz-tag>
            <nz-tag *ngIf="userDesynthLevel < row.dlvl"
                    nzColor="darkgreen">{{'DESYNTH.TAGS.Higher_exp' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score >= 100" nzColor="darkgreen">{{'DESYNTH.TAGS.Very_common' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score < 100 && row.score >= 50"
                    nzColor="#108ee9">{{'DESYNTH.TAGS.Common' | translate}}</nz-tag>
            <nz-tag *ngIf="row.score < 50" nzColor="#f50">{{'DESYNTH.TAGS.Rare' | translate}}</nz-tag>
          </div>
        </div>
      </div>
      <div fxLayout="row" fxLayoutGap="10px" fxLayout.lt-md="column" fxLayoutGap.lt-md="10px"
           fxLayoutAlign.lt-md="center center" nz-row class="inputs-container">
        <div nz-col [nzXs]="24" [nzMd]="15" class="input-box" fxLayout="row" fxLayoutAlign="center center">
          <nz-input-group [nzCompact]="true" class="amount-input">
            <input type="number" [(ngModel)]="row.amount" nz-input>
          </nz-input-group>
        </div>
        <div nz-col [nzXs]="24" [nzMd]="9" class="actions" fxLayout="row" fxLayoutGap="5px"
             fxLayoutAlign="center center">
          <button nz-button [nzType]="'primary'" [nzShape]="'circle'" nz-tooltip
                  [nzTitle]="'ITEMS.Add_to_list' | translate" (click)="addItemsToList([row])">
            <i nz-icon type="plus"></i>
          </button>
          <button nz-button [nzType]="'primary'" [nzShape]="'circle'" nz-tooltip
                  [nzTitle]="'Quick_list_create' | translate" (click)="createQuickList(row)">
            <i nz-icon type="clock-circle-o"></i>
          </button>
        </div>
      </div>
    </div>
  </div>
</div>
<nz-pagination [nzPageIndex]="page$ | async" (nzPageIndexChange)="page$.next($event)" [nzTotal]="totalLength"
               *ngIf="totalLength > 0"
               [nzPageSize]="pageSize" fxLayout="row"
               fxLayoutAlign="center center"></nz-pagination>

<app-fullpage-message *ngIf="pristine" height="300px">
  {{'DESYNTH.Intro' | translate}}
</app-fullpage-message>
<app-page-loader *ngIf="loading" [message]="'DESYNTH.Loading_message' | translate"></app-page-loader>

<ng-template #notificationRef let-notification>
  <div class="ant-notification-notice-content ant-notification-notice-with-icon">
    <span class="ant-notification-notice-icon"><i nz-icon type="check-circle"
                                                  class="ant-notification-notice-icon-success"></i></span>
    <div>
      <div class="ant-notification-notice-message">{{'COMMON.Success' | translate}}</div>
      <div class="ant-notification-notice-description">
        <span *ngIf="itemsAdded === 1">{{'Recipe_Added' | translate: { listname: modifiedList.name } }}</span>
        <span *ngIf="itemsAdded !== 1">{{'Recipes_Added' | translate: {
          itemcount: itemsAdded,
          listname: modifiedList.name
        } }}</span>
      </div>
      <span class="ant-notification-notice-btn">
            <a nz-button nzType="primary" (click)="notification.close();" routerLink="/list/{{modifiedList.$key}}">
              <span>{{'Open' | translate}}</span>
            </a>
          </span>
    </div>
  </div>
</ng-template>

{'fraction_non_alphanumeric': 0.19235608681975463, 'fraction_numerical': 0.010066058508965083, 'mean_word_length': 2.6935811792041826, 'pattern_counts': {'":': 0, '<': 243, '<?xml version=': 0, '>': 245, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5043615', 'n_tokens_mistral': 4622, 'n_tokens_neox': 4300, 'n_words': 634}