diff options
| -rw-r--r-- | ext/bg/js/templates.js | 118 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 32 | ||||
| -rw-r--r-- | ext/mixed/css/display.css | 8 | ||||
| -rw-r--r-- | tmpl/kanji.html | 44 | 
4 files changed, 141 insertions, 61 deletions
| diff --git a/ext/bg/js/templates.js b/ext/bg/js/templates.js index 41bc58c9..55b09dfb 100644 --- a/ext/bg/js/templates.js +++ b/ext/bg/js/templates.js @@ -29,25 +29,47 @@ templates['kanji.html'] = template({"1":function(container,depth0,helpers,partia      + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.source : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "        <img src=\"/mixed/img/entry-current.png\" class=\"current\" title=\"Current entry (Alt + Up/Down/Home/End/PgUp/PgDn)\" alt>\n    </div>\n\n    <div class=\"glyph\">"      + container.escapeExpression(((helper = (helper = helpers.character || (depth0 != null ? depth0.character : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"character","hash":{},"data":data}) : helper))) -    + "</div>\n\n    <div>\n" -    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") -    + "    </div>\n\n    <table class=\"table table-condensed glyph-data\">\n        <tr>\n            <th>Readings</th>\n            <th>Glossary</th>\n            <th>Statistics</th>\n        </tr>\n        <tr>\n            <td class=\"reading\">\n                <dl>\n" -    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.kunyomi : depth0),{"name":"each","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") -    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.onyomi : depth0),{"name":"each","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "</div>\n\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.frequencies : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tags : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "\n    <table class=\"table table-condensed glyph-data\">\n        <tr>\n            <th>Readings</th>\n            <th>Glossary</th>\n            <th>Statistics</th>\n        </tr>\n        <tr>\n            <td class=\"reading\">\n                <dl>\n" +    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.kunyomi : depth0),{"name":"each","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.onyomi : depth0),{"name":"each","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "                </dl>\n            </td>\n            <td class=\"glossary\">\n" -    + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.glossary : depth0)) != null ? stack1["1"] : stack1),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.program(13, data, 0),"data":data})) != null ? stack1 : "") -    + "            </td>\n            <td>\n                <dl>\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.stats : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.program(18, data, 0),"data":data})) != null ? stack1 : "") -    + "                </dl>\n            </td>\n        </tr>\n        <tr>\n            <th colspan=\"3\">Dictionary Indices</th>\n        </tr>\n        <tr>\n            <td colspan=\"3\">\n                <dl>\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.indices : depth0),{"name":"if","hash":{},"fn":container.program(20, data, 0),"inverse":container.program(22, data, 0),"data":data})) != null ? stack1 : "") -    + "                </dl>\n            </td>\n        </tr>\n    </table>\n\n" -    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.debug : depth0),{"name":"if","hash":{},"fn":container.program(24, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.glossary : depth0)) != null ? stack1["1"] : stack1),{"name":"if","hash":{},"fn":container.program(14, data, 0),"inverse":container.program(17, data, 0),"data":data})) != null ? stack1 : "") +    + "            </td>\n            <td>\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.stats : depth0),{"name":"if","hash":{},"fn":container.program(19, data, 0),"inverse":container.program(25, data, 0),"data":data})) != null ? stack1 : "") +    + "            </td>\n        </tr>\n        <tr>\n            <th colspan=\"3\">Dictionary Indices</th>\n        </tr>\n        <tr>\n            <td colspan=\"3\">\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.indices : depth0),{"name":"if","hash":{},"fn":container.program(27, data, 0),"inverse":container.program(29, data, 0),"data":data})) != null ? stack1 : "") +    + "            </td>\n        </tr>\n    </table>\n\n" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.debug : depth0),{"name":"if","hash":{},"fn":container.program(31, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "</div>\n";  },"2":function(container,depth0,helpers,partials,data) {      return "        <a href=\"#\" class=\"action-view-note pending disabled\"><img src=\"/mixed/img/view-note.png\" title=\"View added note (Alt + V)\" alt></a>\n        <a href=\"#\" class=\"action-add-note pending disabled\" data-mode=\"kanji\"><img src=\"/mixed/img/add-kanji.png\" title=\"Add Kanji (Alt + K)\" alt></a>\n";  },"4":function(container,depth0,helpers,partials,data) {      return "        <a href=\"#\" class=\"source-term\"><img src=\"/mixed/img/source-term.png\" title=\"Source term (Alt + B)\" alt></a>\n";  },"6":function(container,depth0,helpers,partials,data) { +    var stack1; + +  return "    <div>\n" +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.frequencies : depth0),{"name":"each","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "    </div>\n"; +},"7":function(container,depth0,helpers,partials,data) { +    var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + +  return "        <span class=\"label label-default tag-frequency\">" +    + alias4(((helper = (helper = helpers.dictionary || (depth0 != null ? depth0.dictionary : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"dictionary","hash":{},"data":data}) : helper))) +    + ":" +    + alias4(((helper = (helper = helpers.frequency || (depth0 != null ? depth0.frequency : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"frequency","hash":{},"data":data}) : helper))) +    + "</span>\n"; +},"9":function(container,depth0,helpers,partials,data) { +    var stack1; + +  return "    <div>\n" +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.tags : depth0),{"name":"each","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "    </div>\n"; +},"10":function(container,depth0,helpers,partials,data) {      var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;    return "        <span class=\"label label-default tag-" @@ -57,76 +79,88 @@ templates['kanji.html'] = template({"1":function(container,depth0,helpers,partia      + "\">"      + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper)))      + "</span>\n"; -},"8":function(container,depth0,helpers,partials,data) { +},"12":function(container,depth0,helpers,partials,data) {      return "                    <dd>"      + container.escapeExpression(container.lambda(depth0, depth0))      + "</dd>\n"; -},"10":function(container,depth0,helpers,partials,data) { +},"14":function(container,depth0,helpers,partials,data) {      var stack1;    return "                <ol>\n" -    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.glossary : depth0),{"name":"each","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "                </ol>\n"; -},"11":function(container,depth0,helpers,partials,data) { +},"15":function(container,depth0,helpers,partials,data) {      return "                    <li><span class=\"glossary-item\">"      + container.escapeExpression(container.lambda(depth0, depth0))      + "</span></li>\n"; -},"13":function(container,depth0,helpers,partials,data) { +},"17":function(container,depth0,helpers,partials,data) {      var stack1;    return "                <span class=\"glossary-item\">"      + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.glossary : depth0)) != null ? stack1["0"] : stack1), depth0))      + "</span>\n"; -},"15":function(container,depth0,helpers,partials,data) { +},"19":function(container,depth0,helpers,partials,data) {      var stack1; -  return ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.stats : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); -},"16":function(container,depth0,helpers,partials,data) { -    var helper, alias1=container.escapeExpression; - -  return "                    <dd><b>" -    + alias1(((helper = (helper = helpers.key || (data && data.key)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"key","hash":{},"data":data}) : helper))) -    + "</b>: " -    + alias1(container.lambda(depth0, depth0)) -    + "</dd>\n"; -},"18":function(container,depth0,helpers,partials,data) { -    return "                    No statistical data found\n"; +  return "                <table class=\"info-output\">\n" +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.stats : depth0),{"name":"each","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "                </table>\n";  },"20":function(container,depth0,helpers,partials,data) { +    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}); + +  return "                    <tr>\n                        <th>" +    + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.notes : depth0),{"name":"if","hash":{},"fn":container.program(21, data, 0),"inverse":container.program(23, data, 0),"data":data})) != null ? stack1 : "") +    + "</th>\n                        <td>" +    + container.escapeExpression(((helper = (helper = helpers.value || (depth0 != null ? depth0.value : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"value","hash":{},"data":data}) : helper))) +    + "</td>\n                    </tr>\n"; +},"21":function(container,depth0,helpers,partials,data) { +    var helper; + +  return container.escapeExpression(((helper = (helper = helpers.notes || (depth0 != null ? depth0.notes : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"notes","hash":{},"data":data}) : helper))); +},"23":function(container,depth0,helpers,partials,data) { +    var helper; + +  return container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"name","hash":{},"data":data}) : helper))); +},"25":function(container,depth0,helpers,partials,data) { +    return "                No statistical data found\n"; +},"27":function(container,depth0,helpers,partials,data) {      var stack1; -  return ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.indices : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); -},"22":function(container,depth0,helpers,partials,data) { -    return "                    No index data found\n"; -},"24":function(container,depth0,helpers,partials,data) { +  return "                <table class=\"info-output\">\n" +    + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.indices : depth0),{"name":"each","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") +    + "                </table>\n"; +},"29":function(container,depth0,helpers,partials,data) { +    return "                No index data found\n"; +},"31":function(container,depth0,helpers,partials,data) {      var stack1, helper, options, buffer =     "    <pre>"; -  stack1 = ((helper = (helper = helpers.dumpObject || (depth0 != null ? depth0.dumpObject : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"dumpObject","hash":{},"fn":container.program(25, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),options) : helper)); +  stack1 = ((helper = (helper = helpers.dumpObject || (depth0 != null ? depth0.dumpObject : depth0)) != null ? helper : helpers.helperMissing),(options={"name":"dumpObject","hash":{},"fn":container.program(32, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),options) : helper));    if (!helpers.dumpObject) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)}    if (stack1 != null) { buffer += stack1; }    return buffer + "</pre>\n"; -},"25":function(container,depth0,helpers,partials,data) { +},"32":function(container,depth0,helpers,partials,data) {      var stack1;    return ((stack1 = container.lambda(depth0, depth0)) != null ? stack1 : ""); -},"27":function(container,depth0,helpers,partials,data,blockParams,depths) { +},"34":function(container,depth0,helpers,partials,data,blockParams,depths) {      var stack1; -  return ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.definitions : depth0),{"name":"each","hash":{},"fn":container.program(28, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : ""); -},"28":function(container,depth0,helpers,partials,data,blockParams,depths) { +  return ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.definitions : depth0),{"name":"each","hash":{},"fn":container.program(35, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : ""); +},"35":function(container,depth0,helpers,partials,data,blockParams,depths) {      var stack1; -  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(data && data.first),{"name":"unless","hash":{},"fn":container.program(29, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") +  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(data && data.first),{"name":"unless","hash":{},"fn":container.program(36, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "")      + "\n"      + ((stack1 = container.invokePartial(partials.kanji,depth0,{"name":"kanji","hash":{"root":(depths[1] != null ? depths[1].root : depths[1]),"source":(depths[1] != null ? depths[1].source : depths[1]),"addable":(depths[1] != null ? depths[1].addable : depths[1]),"debug":(depths[1] != null ? depths[1].debug : depths[1])},"data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : ""); -},"29":function(container,depth0,helpers,partials,data) { +},"36":function(container,depth0,helpers,partials,data) {      return "<hr>"; -},"31":function(container,depth0,helpers,partials,data) { +},"38":function(container,depth0,helpers,partials,data) {      return "<p class=\"note\">No results found</p>\n";  },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) {      var stack1;    return "\n" -    + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.definitions : depth0),{"name":"if","hash":{},"fn":container.program(27, data, 0, blockParams, depths),"inverse":container.program(31, data, 0, blockParams, depths),"data":data})) != null ? stack1 : ""); +    + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.definitions : depth0),{"name":"if","hash":{},"fn":container.program(34, data, 0, blockParams, depths),"inverse":container.program(38, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "");  },"main_d":  function(fn, props, container, depth0, data, blockParams, depths) {    var decorators = container.decorators; diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 3dd482ca..ef2227ea 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -78,7 +78,7 @@ class Translator {          let definitions = [];          for (const deinflection of deinflections) {              for (const definition of deinflection.definitions) { -                const tags = await this.expandTags(definition); +                const tags = await this.expandTags(definition.tags, definition.dictionary);                  tags.push(dictTagBuildSource(definition.dictionary));                  definitions.push({ @@ -136,9 +136,12 @@ class Translator {          }          for (const definition of definitions) { -            const tags = await this.expandTags(definition); +            const tags = await this.expandTags(definition.tags, definition.dictionary);              tags.push(dictTagBuildSource(definition.dictionary)); +              definition.tags = dictTagsSort(tags); +            definition.stats = await this.expandTaggedValues(definition.stats, definition.dictionary); +            definition.indices = await this.expandTaggedValues(definition.indices, definition.dictionary);              definition.frequencies = await this.database.findKanjiFreq(definition.character, titles);          } @@ -152,11 +155,11 @@ class Translator {          }      } -    async expandTags(definition) { +    async expandTags(names, title) {          const tags = []; -        for (const name of definition.tags) { +        for (const name of names) {              const base = name.split(':')[0]; -            const meta = await this.database.findTagForTitle(base, definition.dictionary); +            const meta = await this.database.findTagForTitle(base, title);              const tag = {name};              for (const prop in meta || {}) { @@ -170,4 +173,23 @@ class Translator {          return tags;      } + +    async expandTaggedValues(items, title) { +        const tags = []; +        for (const name in items) { +            const base = name.split(':')[0]; +            const meta = await this.database.findTagForTitle(base, title); + +            const tag = {name, value: items[name]}; +            for (const prop in meta || {}) { +                if (prop !== 'name') { +                    tag[prop] = meta[prop]; +                } +            } + +            tags.push(dictTagSanitize(tag)); +        } + +        return tags; +    }  } diff --git a/ext/mixed/css/display.css b/ext/mixed/css/display.css index 92480bab..cdc1be8c 100644 --- a/ext/mixed/css/display.css +++ b/ext/mixed/css/display.css @@ -152,3 +152,11 @@ hr {  .glyph-data {      margin-top: 10px;  } + +.info-output { +    width: 100%; +} + +.info-output td { +    text-align: right; +} diff --git a/tmpl/kanji.html b/tmpl/kanji.html index ad6dcb26..57b6b7dc 100644 --- a/tmpl/kanji.html +++ b/tmpl/kanji.html @@ -13,11 +13,21 @@      <div class="glyph">{{character}}</div> +    {{#if frequencies}} +    <div> +        {{#each frequencies}} +        <span class="label label-default tag-frequency">{{dictionary}}:{{frequency}}</span> +        {{/each}} +    </div> +    {{/if}} + +    {{#if tags}}      <div>          {{#each tags}}          <span class="label label-default tag-{{category}}" title="{{notes}}">{{name}}</span>          {{/each}}      </div> +    {{/if}}      <table class="table table-condensed glyph-data">          <tr> @@ -48,15 +58,18 @@                  {{/if}}              </td>              <td> -                <dl> -                    {{#if stats}} +                {{#if stats}} +                <table class="info-output">                      {{#each stats}} -                    <dd><b>{{@key}}</b>: {{.}}</dd> +                    <tr> +                        <th>{{#if notes}}{{notes}}{{else}}{{name}}{{/if}}</th> +                        <td>{{value}}</td> +                    </tr>                      {{/each}} -                    {{else}} -                    No statistical data found -                    {{/if}} -                </dl> +                </table> +                {{else}} +                No statistical data found +                {{/if}}              </td>          </tr>          <tr> @@ -64,15 +77,18 @@          </tr>          <tr>              <td colspan="3"> -                <dl> -                    {{#if indices}} +                {{#if indices}} +                <table class="info-output">                      {{#each indices}} -                    <dd><b>{{@key}}</b>: {{.}}</dd> +                    <tr> +                        <th>{{#if notes}}{{notes}}{{else}}{{name}}{{/if}}</th> +                        <td>{{value}}</td> +                    </tr>                      {{/each}} -                    {{else}} -                    No index data found -                    {{/if}} -                </dl> +                </table> +                {{else}} +                No index data found +                {{/if}}              </td>          </tr>      </table> |