<commit_before><div
  class="visualizer-course-objectives {{unless @isIcon "not-icon"}}"
  data-test-visualizer-course-objectives
  ...attributes
>
  {{#if this.isLoaded}}
    {{#if (or @isIcon this.objectiveWithMinutes.length)}}
      <SimpleChart
        @name="donut"
        @isIcon={{@isIcon}}
        @data={{this.objectiveWithMinutes}}
        @hover={{perform this.donutHover}}
        @leave={{perform this.donutHover}} as |chart|
      >
        {{#if this.tooltipContent}}
          <chart.tooltip @title={{this.tooltipTitle}}>
            {{this.tooltipContent}}
          </chart.tooltip>
        {{/if}}
      </SimpleChart>
    {{else}}
      <div class="with-hours" data-test-with-hours>
        <p>
          {{t "general.objectivesWithNoLink"}}
        </p>
        <h4>
          <FaIcon @icon="meh" class="meh-o" />
        </h4>
      </div>
    {{/if}}
    {{#unless (or @isIcon (not this.objectiveWithoutMinutes.length))}}
      <div class="zero-hours" data-test-zero-hours>
        <h4>
          <FaIcon @icon="triangle-exclamation" class="warning" />
          {{t "general.unusedObjectives"}}:
        </h4>
        <p>
          {{t "general.objectivesWithNoHours"}}
        </p>
        <ul>
          {{#each
            (sort-by
              "meta.courseObjective.title" this.objectiveWithoutMinutes
            ) as |obj|
          }}
            {{! template-lint-disable no-triple-curlies}}
            <li>
              {{{obj.meta.courseObjective.title}}}
            </li>
          {{/each}}
        </ul>
      </div>
    {{/unless}}
  {{/if}}
  {{#if (or @isIcon this.objectiveWithMinutes.length)}}
    <div class="data-table">
      <table>
        <thead>
          <tr>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "percentage") (eq this.sortBy "percentage:desc")}}
              @onClick={{fn this.setSortBy "percentage"}}
              @sortType="numeric"
            >
              {{t "general.percentage"}}
            </SortableTh>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "objective") (eq this.sortBy "objective:desc")}}
              @onClick={{fn this.setSortBy "objective"}}
            >
              {{t "general.courseObjective"}}
            </SortableTh>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "competency") (eq this.sortBy "competency:desc")}}
              @onClick={{fn this.setSortBy "competency"}}
            >
              {{t "general.competency"}}
            </SortableTh>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "sessionTitles") (eq this.sortBy "sessionTitles:desc")}}
              @onClick={{fn this.setSortBy "sessionTitles"}}
            >
              {{t "general.sessions"}}
            </SortableTh>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "minutes") (eq this.sortBy "minutes:desc")}}
              @onClick={{fn this.setSortBy "minutes"}}
              @sortType="numeric"
            >
              {{t "general.minutes"}}
            </SortableTh>
          </tr>
        </thead>
        <tbody>
          {{#each (sort-by this.sortBy this.tableData) as |row|}}
            <tr>
              <td>{{row.percentage}}</td>
              <td class="objective">{{{row.objective}}}</td>
              <td>{{row.competency}}</td>
              <td>{{row.sessionTitles}}</td>
              <td>{{row.minutes}}</td>
            </tr>
          {{/each}}
        </tbody>
      </table>
    </div>
  {{/if}}
</div><commit_msg>give text columns a bit more room than number columns.<commit_after><div
  class="visualizer-course-objectives {{unless @isIcon "not-icon"}}"
  data-test-visualizer-course-objectives
  ...attributes
>
  {{#if this.isLoaded}}
    {{#if (or @isIcon this.objectiveWithMinutes.length)}}
      <SimpleChart
        @name="donut"
        @isIcon={{@isIcon}}
        @data={{this.objectiveWithMinutes}}
        @hover={{perform this.donutHover}}
        @leave={{perform this.donutHover}} as |chart|
      >
        {{#if this.tooltipContent}}
          <chart.tooltip @title={{this.tooltipTitle}}>
            {{this.tooltipContent}}
          </chart.tooltip>
        {{/if}}
      </SimpleChart>
    {{else}}
      <div class="with-hours" data-test-with-hours>
        <p>
          {{t "general.objectivesWithNoLink"}}
        </p>
        <h4>
          <FaIcon @icon="meh" class="meh-o" />
        </h4>
      </div>
    {{/if}}
    {{#unless (or @isIcon (not this.objectiveWithoutMinutes.length))}}
      <div class="zero-hours" data-test-zero-hours>
        <h4>
          <FaIcon @icon="triangle-exclamation" class="warning" />
          {{t "general.unusedObjectives"}}:
        </h4>
        <p>
          {{t "general.objectivesWithNoHours"}}
        </p>
        <ul>
          {{#each
            (sort-by
              "meta.courseObjective.title" this.objectiveWithoutMinutes
            ) as |obj|
          }}
            {{! template-lint-disable no-triple-curlies}}
            <li>
              {{{obj.meta.courseObjective.title}}}
            </li>
          {{/each}}
        </ul>
      </div>
    {{/unless}}
  {{/if}}
  {{#if (or @isIcon this.objectiveWithMinutes.length)}}
    <div class="data-table">
      <table>
        <thead>
          <tr>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "percentage") (eq this.sortBy "percentage:desc")}}
              @onClick={{fn this.setSortBy "percentage"}}
              @sortType="numeric"
            >
              {{t "general.percentage"}}
            </SortableTh>
            <SortableTh
              @colspan="3"
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "objective") (eq this.sortBy "objective:desc")}}
              @onClick={{fn this.setSortBy "objective"}}
            >
              {{t "general.courseObjective"}}
            </SortableTh>
            <SortableTh
              @colspan="2"
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "competency") (eq this.sortBy "competency:desc")}}
              @onClick={{fn this.setSortBy "competency"}}
            >
              {{t "general.competency"}}
            </SortableTh>
            <SortableTh
              @colspan="2"
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "sessionTitles") (eq this.sortBy "sessionTitles:desc")}}
              @onClick={{fn this.setSortBy "sessionTitles"}}
            >
              {{t "general.sessions"}}
            </SortableTh>
            <SortableTh
              @sortedAscending={{this.sortedAscending}}
              @sortedBy={{or (eq this.sortBy "minutes") (eq this.sortBy "minutes:desc")}}
              @onClick={{fn this.setSortBy "minutes"}}
              @sortType="numeric"
            >
              {{t "general.minutes"}}
            </SortableTh>
          </tr>
        </thead>
        <tbody>
          {{#each (sort-by this.sortBy this.tableData) as |row|}}
            <tr>
              <td>{{row.percentage}}</td>
              <td class="objective" colspan="3">{{{row.objective}}}</td>
              <td colspan="2">{{row.competency}}</td>
              <td colspan="2">{{row.sessionTitles}}</td>
              <td>{{row.minutes}}</td>
            </tr>
          {{/each}}
        </tbody>
      </table>
    </div>
  {{/if}}
</div>
{'fraction_non_alphanumeric': 0.16521516393442623, 'fraction_numerical': 0.001793032786885246, 'mean_word_length': 1.7180647406891751, 'pattern_counts': {'":': 0, '<': 115, '<?xml version=': 0, '>': 115, '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': '2552459', 'n_tokens_mistral': 2473, 'n_tokens_neox': 2444, 'n_words': 396}