diff --git a/app-facet-search/babel.config.js b/app-facet-search/babel.config.js new file mode 100644 index 0000000..d63b261 --- /dev/null +++ b/app-facet-search/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [['@babel/preset-env', {targets: {node: 'current'}}]], + plugins: ["@babel/plugin-syntax-jsx", "transform-export-extensions"], + only: ["./**/*.jsx", "./**/*.js", "node_modules/jest-runtime"], +}; \ No newline at end of file diff --git a/app-facet-search/coverage/clover.xml b/app-facet-search/coverage/clover.xml new file mode 100644 index 0000000..75d9538 --- /dev/null +++ b/app-facet-search/coverage/clover.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-facet-search/coverage/coverage-final.json b/app-facet-search/coverage/coverage-final.json new file mode 100644 index 0000000..f050b9e --- /dev/null +++ b/app-facet-search/coverage/coverage-final.json @@ -0,0 +1,8 @@ +{"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\App.js": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\App.js","statementMap":{"0":{"start":{"line":9,"column":15},"end":{"line":9,"column":17}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":71}},"2":{"start":{"line":11,"column":0},"end":{"line":13,"column":1}},"3":{"start":{"line":11,"column":13},"end":{"line":11,"column":14}},"4":{"start":{"line":12,"column":2},"end":{"line":12,"column":41}},"5":{"start":{"line":19,"column":4},"end":{"line":19,"column":17}},"6":{"start":{"line":20,"column":4},"end":{"line":28,"column":6}},"7":{"start":{"line":29,"column":4},"end":{"line":29,"column":61}},"8":{"start":{"line":30,"column":4},"end":{"line":30,"column":71}},"9":{"start":{"line":31,"column":4},"end":{"line":31,"column":51}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"11":{"start":{"line":36,"column":19},"end":{"line":36,"column":21}},"12":{"start":{"line":37,"column":19},"end":{"line":37,"column":21}},"13":{"start":{"line":38,"column":20},"end":{"line":38,"column":22}},"14":{"start":{"line":39,"column":20},"end":{"line":39,"column":22}},"15":{"start":{"line":40,"column":27},"end":{"line":40,"column":29}},"16":{"start":{"line":41,"column":4},"end":{"line":57,"column":9}},"17":{"start":{"line":42,"column":19},"end":{"line":42,"column":27}},"18":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"19":{"start":{"line":45,"column":10},"end":{"line":45,"column":42}},"20":{"start":{"line":46,"column":10},"end":{"line":46,"column":41}},"21":{"start":{"line":47,"column":10},"end":{"line":47,"column":44}},"22":{"start":{"line":48,"column":10},"end":{"line":48,"column":44}},"23":{"start":{"line":49,"column":10},"end":{"line":49,"column":58}},"24":{"start":{"line":51,"column":8},"end":{"line":51,"column":48}},"25":{"start":{"line":52,"column":8},"end":{"line":52,"column":48}},"26":{"start":{"line":53,"column":8},"end":{"line":53,"column":50}},"27":{"start":{"line":54,"column":8},"end":{"line":54,"column":50}},"28":{"start":{"line":55,"column":8},"end":{"line":55,"column":64}},"29":{"start":{"line":56,"column":8},"end":{"line":56,"column":43}},"30":{"start":{"line":62,"column":17},"end":{"line":62,"column":60}},"31":{"start":{"line":64,"column":14},"end":{"line":64,"column":78}},"32":{"start":{"line":65,"column":4},"end":{"line":78,"column":9}},"33":{"start":{"line":66,"column":19},"end":{"line":66,"column":27}},"34":{"start":{"line":68,"column":8},"end":{"line":77,"column":9}},"35":{"start":{"line":71,"column":29},"end":{"line":72,"column":53}},"36":{"start":{"line":73,"column":10},"end":{"line":73,"column":41}},"37":{"start":{"line":76,"column":10},"end":{"line":76,"column":76}},"38":{"start":{"line":82,"column":21},"end":{"line":82,"column":23}},"39":{"start":{"line":83,"column":4},"end":{"line":126,"column":5}},"40":{"start":{"line":84,"column":6},"end":{"line":125,"column":9}},"41":{"start":{"line":85,"column":18},"end":{"line":85,"column":66}},"42":{"start":{"line":86,"column":25},"end":{"line":86,"column":75}},"43":{"start":{"line":87,"column":8},"end":{"line":87,"column":65}},"44":{"start":{"line":88,"column":8},"end":{"line":124,"column":9}},"45":{"start":{"line":89,"column":10},"end":{"line":89,"column":57}},"46":{"start":{"line":90,"column":10},"end":{"line":90,"column":27}},"47":{"start":{"line":91,"column":10},"end":{"line":91,"column":33}},"48":{"start":{"line":93,"column":10},"end":{"line":109,"column":11}},"49":{"start":{"line":94,"column":19},"end":{"line":94,"column":55}},"50":{"start":{"line":95,"column":19},"end":{"line":95,"column":51}},"51":{"start":{"line":96,"column":21},"end":{"line":96,"column":37}},"52":{"start":{"line":97,"column":11},"end":{"line":108,"column":12}},"53":{"start":{"line":97,"column":24},"end":{"line":97,"column":25}},"54":{"start":{"line":98,"column":21},"end":{"line":98,"column":35}},"55":{"start":{"line":99,"column":14},"end":{"line":107,"column":14}},"56":{"start":{"line":101,"column":14},"end":{"line":101,"column":51}},"57":{"start":{"line":102,"column":14},"end":{"line":102,"column":18}},"58":{"start":{"line":103,"column":20},"end":{"line":107,"column":14}},"59":{"start":{"line":105,"column":14},"end":{"line":105,"column":51}},"60":{"start":{"line":106,"column":14},"end":{"line":106,"column":18}},"61":{"start":{"line":110,"column":10},"end":{"line":122,"column":11}},"62":{"start":{"line":111,"column":21},"end":{"line":111,"column":37}},"63":{"start":{"line":113,"column":11},"end":{"line":121,"column":12}},"64":{"start":{"line":113,"column":24},"end":{"line":113,"column":25}},"65":{"start":{"line":114,"column":21},"end":{"line":114,"column":35}},"66":{"start":{"line":116,"column":13},"end":{"line":120,"column":14}},"67":{"start":{"line":118,"column":16},"end":{"line":118,"column":53}},"68":{"start":{"line":119,"column":16},"end":{"line":119,"column":20}},"69":{"start":{"line":127,"column":4},"end":{"line":127,"column":44}},"70":{"start":{"line":128,"column":4},"end":{"line":132,"column":7}},"71":{"start":{"line":129,"column":6},"end":{"line":131,"column":7}},"72":{"start":{"line":130,"column":8},"end":{"line":130,"column":66}},"73":{"start":{"line":137,"column":4},"end":{"line":137,"column":28}},"74":{"start":{"line":138,"column":4},"end":{"line":138,"column":33}},"75":{"start":{"line":142,"column":107},"end":{"line":142,"column":117}},"76":{"start":{"line":143,"column":4},"end":{"line":161,"column":6}},"77":{"start":{"line":148,"column":27},"end":{"line":148,"column":44}},"78":{"start":{"line":149,"column":27},"end":{"line":149,"column":43}},"79":{"start":{"line":150,"column":31},"end":{"line":150,"column":47}},"80":{"start":{"line":151,"column":29},"end":{"line":151,"column":46}},"81":{"start":{"line":152,"column":29},"end":{"line":152,"column":46}},"82":{"start":{"line":153,"column":36},"end":{"line":153,"column":60}},"83":{"start":{"line":154,"column":14},"end":{"line":156,"column":16}},"84":{"start":{"line":166,"column":23},"end":{"line":168,"column":1}},"85":{"start":{"line":167,"column":2},"end":{"line":167,"column":38}},"86":{"start":{"line":172,"column":23},"end":{"line":176,"column":1}},"87":{"start":{"line":173,"column":2},"end":{"line":175,"column":3}},"88":{"start":{"line":174,"column":4},"end":{"line":174,"column":43}},"89":{"start":{"line":179,"column":32},"end":{"line":191,"column":1}},"90":{"start":{"line":180,"column":15},"end":{"line":180,"column":58}},"91":{"start":{"line":181,"column":15},"end":{"line":181,"column":36}},"92":{"start":{"line":182,"column":2},"end":{"line":189,"column":5}},"93":{"start":{"line":183,"column":15},"end":{"line":183,"column":59}},"94":{"start":{"line":184,"column":4},"end":{"line":188,"column":5}},"95":{"start":{"line":185,"column":6},"end":{"line":187,"column":7}},"96":{"start":{"line":186,"column":8},"end":{"line":186,"column":35}},"97":{"start":{"line":190,"column":2},"end":{"line":190,"column":16}},"98":{"start":{"line":194,"column":24},"end":{"line":201,"column":1}},"99":{"start":{"line":195,"column":2},"end":{"line":195,"column":71}},"100":{"start":{"line":196,"column":2},"end":{"line":196,"column":70}},"101":{"start":{"line":197,"column":2},"end":{"line":197,"column":73}},"102":{"start":{"line":198,"column":2},"end":{"line":198,"column":73}},"103":{"start":{"line":199,"column":2},"end":{"line":199,"column":87}},"104":{"start":{"line":200,"column":2},"end":{"line":200,"column":53}},"105":{"start":{"line":205,"column":0},"end":{"line":205,"column":33}},"106":{"start":{"line":206,"column":0},"end":{"line":206,"column":62}},"107":{"start":{"line":207,"column":0},"end":{"line":207,"column":60}},"108":{"start":{"line":208,"column":0},"end":{"line":208,"column":60}},"109":{"start":{"line":209,"column":0},"end":{"line":209,"column":78}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":2},"end":{"line":18,"column":3}},"loc":{"start":{"line":18,"column":21},"end":{"line":33,"column":3}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":35,"column":2},"end":{"line":35,"column":3}},"loc":{"start":{"line":35,"column":21},"end":{"line":58,"column":3}},"line":35},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":12},"end":{"line":42,"column":13}},"loc":{"start":{"line":42,"column":19},"end":{"line":42,"column":27}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":13}},"loc":{"start":{"line":43,"column":26},"end":{"line":57,"column":7}},"line":43},"4":{"name":"(anonymous_4)","decl":{"start":{"line":60,"column":2},"end":{"line":60,"column":3}},"loc":{"start":{"line":60,"column":26},"end":{"line":79,"column":3}},"line":60},"5":{"name":"(anonymous_5)","decl":{"start":{"line":66,"column":12},"end":{"line":66,"column":13}},"loc":{"start":{"line":66,"column":19},"end":{"line":66,"column":27}},"line":66},"6":{"name":"(anonymous_6)","decl":{"start":{"line":67,"column":12},"end":{"line":67,"column":13}},"loc":{"start":{"line":67,"column":21},"end":{"line":78,"column":7}},"line":67},"7":{"name":"(anonymous_7)","decl":{"start":{"line":81,"column":2},"end":{"line":81,"column":3}},"loc":{"start":{"line":81,"column":20},"end":{"line":134,"column":3}},"line":81},"8":{"name":"(anonymous_8)","decl":{"start":{"line":84,"column":28},"end":{"line":84,"column":29}},"loc":{"start":{"line":84,"column":47},"end":{"line":125,"column":7}},"line":84},"9":{"name":"(anonymous_9)","decl":{"start":{"line":128,"column":26},"end":{"line":128,"column":27}},"loc":{"start":{"line":128,"column":45},"end":{"line":132,"column":5}},"line":128},"10":{"name":"(anonymous_10)","decl":{"start":{"line":136,"column":2},"end":{"line":136,"column":3}},"loc":{"start":{"line":136,"column":22},"end":{"line":139,"column":3}},"line":136},"11":{"name":"(anonymous_11)","decl":{"start":{"line":141,"column":2},"end":{"line":141,"column":3}},"loc":{"start":{"line":141,"column":11},"end":{"line":162,"column":3}},"line":141},"12":{"name":"(anonymous_12)","decl":{"start":{"line":147,"column":41},"end":{"line":147,"column":42}},"loc":{"start":{"line":147,"column":63},"end":{"line":157,"column":13}},"line":147},"13":{"name":"(anonymous_13)","decl":{"start":{"line":166,"column":23},"end":{"line":166,"column":24}},"loc":{"start":{"line":166,"column":29},"end":{"line":168,"column":1}},"line":166},"14":{"name":"(anonymous_14)","decl":{"start":{"line":172,"column":23},"end":{"line":172,"column":24}},"loc":{"start":{"line":172,"column":33},"end":{"line":176,"column":1}},"line":172},"15":{"name":"(anonymous_15)","decl":{"start":{"line":179,"column":32},"end":{"line":179,"column":33}},"loc":{"start":{"line":179,"column":38},"end":{"line":191,"column":1}},"line":179},"16":{"name":"(anonymous_16)","decl":{"start":{"line":182,"column":57},"end":{"line":182,"column":58}},"loc":{"start":{"line":182,"column":77},"end":{"line":189,"column":3}},"line":182},"17":{"name":"(anonymous_17)","decl":{"start":{"line":194,"column":24},"end":{"line":194,"column":25}},"loc":{"start":{"line":194,"column":39},"end":{"line":201,"column":1}},"line":194}},"branchMap":{"0":{"loc":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},{"start":{},"end":{}}],"line":44},"1":{"loc":{"start":{"line":64,"column":14},"end":{"line":64,"column":78}},"type":"cond-expr","locations":[{"start":{"line":64,"column":47},"end":{"line":64,"column":60}},{"start":{"line":64,"column":63},"end":{"line":64,"column":78}}],"line":64},"2":{"loc":{"start":{"line":68,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":77,"column":9}},{"start":{"line":74,"column":15},"end":{"line":77,"column":9}}],"line":68},"3":{"loc":{"start":{"line":71,"column":29},"end":{"line":72,"column":53}},"type":"cond-expr","locations":[{"start":{"line":72,"column":16},"end":{"line":72,"column":48}},{"start":{"line":72,"column":51},"end":{"line":72,"column":53}}],"line":71},"4":{"loc":{"start":{"line":71,"column":29},"end":{"line":71,"column":85}},"type":"binary-expr","locations":[{"start":{"line":71,"column":29},"end":{"line":71,"column":32}},{"start":{"line":71,"column":36},"end":{"line":71,"column":52}},{"start":{"line":71,"column":56},"end":{"line":71,"column":85}}],"line":71},"5":{"loc":{"start":{"line":76,"column":27},"end":{"line":76,"column":74}},"type":"cond-expr","locations":[{"start":{"line":76,"column":53},"end":{"line":76,"column":69}},{"start":{"line":76,"column":72},"end":{"line":76,"column":74}}],"line":76},"6":{"loc":{"start":{"line":76,"column":27},"end":{"line":76,"column":50}},"type":"binary-expr","locations":[{"start":{"line":76,"column":27},"end":{"line":76,"column":30}},{"start":{"line":76,"column":34},"end":{"line":76,"column":50}}],"line":76},"7":{"loc":{"start":{"line":83,"column":4},"end":{"line":126,"column":5}},"type":"if","locations":[{"start":{"line":83,"column":4},"end":{"line":126,"column":5}},{"start":{},"end":{}}],"line":83},"8":{"loc":{"start":{"line":85,"column":18},"end":{"line":85,"column":66}},"type":"cond-expr","locations":[{"start":{"line":85,"column":37},"end":{"line":85,"column":53}},{"start":{"line":85,"column":56},"end":{"line":85,"column":66}}],"line":85},"9":{"loc":{"start":{"line":86,"column":25},"end":{"line":86,"column":75}},"type":"binary-expr","locations":[{"start":{"line":86,"column":25},"end":{"line":86,"column":35}},{"start":{"line":86,"column":39},"end":{"line":86,"column":75}}],"line":86},"10":{"loc":{"start":{"line":87,"column":21},"end":{"line":87,"column":64}},"type":"binary-expr","locations":[{"start":{"line":87,"column":21},"end":{"line":87,"column":50}},{"start":{"line":87,"column":54},"end":{"line":87,"column":64}}],"line":87},"11":{"loc":{"start":{"line":88,"column":8},"end":{"line":124,"column":9}},"type":"if","locations":[{"start":{"line":88,"column":8},"end":{"line":124,"column":9}},{"start":{},"end":{}}],"line":88},"12":{"loc":{"start":{"line":89,"column":29},"end":{"line":89,"column":56}},"type":"cond-expr","locations":[{"start":{"line":89,"column":41},"end":{"line":89,"column":50}},{"start":{"line":89,"column":53},"end":{"line":89,"column":56}}],"line":89},"13":{"loc":{"start":{"line":93,"column":10},"end":{"line":109,"column":11}},"type":"if","locations":[{"start":{"line":93,"column":10},"end":{"line":109,"column":11}},{"start":{},"end":{}}],"line":93},"14":{"loc":{"start":{"line":93,"column":14},"end":{"line":93,"column":85}},"type":"binary-expr","locations":[{"start":{"line":93,"column":14},"end":{"line":93,"column":38}},{"start":{"line":93,"column":42},"end":{"line":93,"column":65}},{"start":{"line":93,"column":69},"end":{"line":93,"column":85}}],"line":93},"15":{"loc":{"start":{"line":99,"column":14},"end":{"line":107,"column":14}},"type":"if","locations":[{"start":{"line":99,"column":14},"end":{"line":107,"column":14}},{"start":{"line":103,"column":20},"end":{"line":107,"column":14}}],"line":99},"16":{"loc":{"start":{"line":99,"column":18},"end":{"line":99,"column":108}},"type":"binary-expr","locations":[{"start":{"line":99,"column":19},"end":{"line":99,"column":28}},{"start":{"line":99,"column":34},"end":{"line":99,"column":61}},{"start":{"line":99,"column":65},"end":{"line":99,"column":107}}],"line":99},"17":{"loc":{"start":{"line":103,"column":20},"end":{"line":107,"column":14}},"type":"if","locations":[{"start":{"line":103,"column":20},"end":{"line":107,"column":14}},{"start":{},"end":{}}],"line":103},"18":{"loc":{"start":{"line":103,"column":24},"end":{"line":103,"column":114}},"type":"binary-expr","locations":[{"start":{"line":103,"column":25},"end":{"line":103,"column":34}},{"start":{"line":103,"column":40},"end":{"line":103,"column":67}},{"start":{"line":103,"column":71},"end":{"line":103,"column":113}}],"line":103},"19":{"loc":{"start":{"line":110,"column":10},"end":{"line":122,"column":11}},"type":"if","locations":[{"start":{"line":110,"column":10},"end":{"line":122,"column":11}},{"start":{},"end":{}}],"line":110},"20":{"loc":{"start":{"line":116,"column":13},"end":{"line":120,"column":14}},"type":"if","locations":[{"start":{"line":116,"column":13},"end":{"line":120,"column":14}},{"start":{},"end":{}}],"line":116},"21":{"loc":{"start":{"line":116,"column":18},"end":{"line":116,"column":91}},"type":"binary-expr","locations":[{"start":{"line":116,"column":18},"end":{"line":116,"column":45}},{"start":{"line":116,"column":49},"end":{"line":116,"column":91}}],"line":116},"22":{"loc":{"start":{"line":129,"column":6},"end":{"line":131,"column":7}},"type":"if","locations":[{"start":{"line":129,"column":6},"end":{"line":131,"column":7}},{"start":{},"end":{}}],"line":129},"23":{"loc":{"start":{"line":145,"column":9},"end":{"line":159,"column":9}},"type":"binary-expr","locations":[{"start":{"line":145,"column":9},"end":{"line":145,"column":18}},{"start":{"line":146,"column":10},"end":{"line":158,"column":16}}],"line":145},"24":{"loc":{"start":{"line":173,"column":2},"end":{"line":175,"column":3}},"type":"if","locations":[{"start":{"line":173,"column":2},"end":{"line":175,"column":3}},{"start":{},"end":{}}],"line":173},"25":{"loc":{"start":{"line":184,"column":4},"end":{"line":188,"column":5}},"type":"if","locations":[{"start":{"line":184,"column":4},"end":{"line":188,"column":5}},{"start":{},"end":{}}],"line":184}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":7,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":4,"17":4,"18":4,"19":2,"20":2,"21":2,"22":2,"23":2,"24":4,"25":4,"26":4,"27":4,"28":4,"29":4,"30":4,"31":4,"32":4,"33":4,"34":4,"35":2,"36":2,"37":2,"38":9,"39":9,"40":8,"41":46,"42":46,"43":46,"44":46,"45":29,"46":29,"47":29,"48":29,"49":16,"50":16,"51":16,"52":16,"53":16,"54":63,"55":63,"56":18,"57":18,"58":45,"59":9,"60":9,"61":29,"62":4,"63":4,"64":4,"65":7,"66":7,"67":3,"68":3,"69":9,"70":9,"71":46,"72":4,"73":4,"74":4,"75":6,"76":6,"77":14,"78":14,"79":14,"80":14,"81":14,"82":14,"83":14,"84":3,"85":2,"86":3,"87":6,"88":5,"89":3,"90":2,"91":2,"92":2,"93":14,"94":14,"95":2,"96":2,"97":2,"98":3,"99":2,"100":2,"101":2,"102":2,"103":2,"104":2,"105":3,"106":3,"107":3,"108":3,"109":3},"f":{"0":7,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":9,"8":46,"9":46,"10":4,"11":6,"12":14,"13":2,"14":6,"15":2,"16":14,"17":2},"b":{"0":[2,2],"1":[2,2],"2":[2,2],"3":[1,1],"4":[2,2,1],"5":[1,1],"6":[2,2],"7":[8,1],"8":[2,44],"9":[46,1],"10":[46,17],"11":[29,17],"12":[1,28],"13":[16,13],"14":[29,25,20],"15":[18,45],"16":[63,36,20],"17":[9,36],"18":[45,27,11],"19":[4,25],"20":[3,4],"21":[7,4],"22":[4,42],"23":[6,2],"24":[5,1],"25":[2,12]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"504b222e0d8eeb70d76d6017e10ef8e46f9a975c"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeCheckboxList.jsx": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeCheckboxList.jsx","statementMap":{"0":{"start":{"line":39,"column":50},"end":{"line":39,"column":62}},"1":{"start":{"line":42,"column":22},"end":{"line":42,"column":46}},"2":{"start":{"line":43,"column":33},"end":{"line":43,"column":58}},"3":{"start":{"line":54,"column":19},"end":{"line":81,"column":3}},"4":{"start":{"line":55,"column":4},"end":{"line":79,"column":5}},"5":{"start":{"line":57,"column":6},"end":{"line":57,"column":37}},"6":{"start":{"line":58,"column":6},"end":{"line":67,"column":7}},"7":{"start":{"line":70,"column":6},"end":{"line":78,"column":7}},"8":{"start":{"line":94,"column":23},"end":{"line":112,"column":3}},"9":{"start":{"line":95,"column":4},"end":{"line":111,"column":5}},"10":{"start":{"line":97,"column":8},"end":{"line":109,"column":9}},"11":{"start":{"line":98,"column":19},"end":{"line":98,"column":81}},"12":{"start":{"line":99,"column":22},"end":{"line":99,"column":65}},"13":{"start":{"line":100,"column":24},"end":{"line":100,"column":86}},"14":{"start":{"line":101,"column":10},"end":{"line":108,"column":11}},"15":{"start":{"line":122,"column":28},"end":{"line":139,"column":3}},"16":{"start":{"line":123,"column":4},"end":{"line":138,"column":5}},"17":{"start":{"line":145,"column":4},"end":{"line":147,"column":5}},"18":{"start":{"line":146,"column":6},"end":{"line":146,"column":13}},"19":{"start":{"line":148,"column":4},"end":{"line":148,"column":92}},"20":{"start":{"line":158,"column":4},"end":{"line":161,"column":5}},"21":{"start":{"line":159,"column":8},"end":{"line":159,"column":38}},"22":{"start":{"line":160,"column":8},"end":{"line":160,"column":15}},"23":{"start":{"line":162,"column":4},"end":{"line":162,"column":89}},"24":{"start":{"line":163,"column":4},"end":{"line":166,"column":7}},"25":{"start":{"line":165,"column":6},"end":{"line":165,"column":79}},"26":{"start":{"line":174,"column":20},"end":{"line":174,"column":22}},"27":{"start":{"line":175,"column":4},"end":{"line":179,"column":7}},"28":{"start":{"line":176,"column":6},"end":{"line":178,"column":7}},"29":{"start":{"line":177,"column":8},"end":{"line":177,"column":53}},"30":{"start":{"line":180,"column":4},"end":{"line":180,"column":80}},"31":{"start":{"line":181,"column":4},"end":{"line":181,"column":27}},"32":{"start":{"line":189,"column":20},"end":{"line":189,"column":22}},"33":{"start":{"line":190,"column":4},"end":{"line":196,"column":7}},"34":{"start":{"line":191,"column":6},"end":{"line":195,"column":7}},"35":{"start":{"line":192,"column":8},"end":{"line":192,"column":53}},"36":{"start":{"line":193,"column":12},"end":{"line":195,"column":7}},"37":{"start":{"line":194,"column":8},"end":{"line":194,"column":72}},"38":{"start":{"line":197,"column":4},"end":{"line":197,"column":27}},"39":{"start":{"line":198,"column":4},"end":{"line":198,"column":92}},"40":{"start":{"line":208,"column":4},"end":{"line":208,"column":24}},"41":{"start":{"line":210,"column":4},"end":{"line":212,"column":7}},"42":{"start":{"line":211,"column":6},"end":{"line":211,"column":41}},"43":{"start":{"line":213,"column":4},"end":{"line":213,"column":52}},"44":{"start":{"line":213,"column":32},"end":{"line":213,"column":52}},"45":{"start":{"line":214,"column":4},"end":{"line":214,"column":42}},"46":{"start":{"line":215,"column":4},"end":{"line":219,"column":5}},"47":{"start":{"line":216,"column":6},"end":{"line":216,"column":60}},"48":{"start":{"line":218,"column":6},"end":{"line":218,"column":49}},"49":{"start":{"line":223,"column":15},"end":{"line":223,"column":58}},"50":{"start":{"line":224,"column":16},"end":{"line":224,"column":48}},"51":{"start":{"line":226,"column":11},"end":{"line":226,"column":52}},"52":{"start":{"line":227,"column":2},"end":{"line":237,"column":4}}},"fnMap":{"0":{"name":"RangeCheckboxList","decl":{"start":{"line":38,"column":9},"end":{"line":38,"column":26}},"loc":{"start":{"line":38,"column":68},"end":{"line":238,"column":1}},"line":38},"1":{"name":"(anonymous_1)","decl":{"start":{"line":54,"column":19},"end":{"line":54,"column":20}},"loc":{"start":{"line":54,"column":56},"end":{"line":81,"column":3}},"line":54},"2":{"name":"(anonymous_2)","decl":{"start":{"line":94,"column":23},"end":{"line":94,"column":24}},"loc":{"start":{"line":94,"column":78},"end":{"line":112,"column":3}},"line":94},"3":{"name":"(anonymous_3)","decl":{"start":{"line":96,"column":17},"end":{"line":96,"column":18}},"loc":{"start":{"line":96,"column":36},"end":{"line":110,"column":7}},"line":96},"4":{"name":"(anonymous_4)","decl":{"start":{"line":122,"column":28},"end":{"line":122,"column":29}},"loc":{"start":{"line":122,"column":59},"end":{"line":139,"column":3}},"line":122},"5":{"name":"closeModal","decl":{"start":{"line":144,"column":11},"end":{"line":144,"column":21}},"loc":{"start":{"line":144,"column":24},"end":{"line":149,"column":3}},"line":144},"6":{"name":"openModal","decl":{"start":{"line":156,"column":11},"end":{"line":156,"column":20}},"loc":{"start":{"line":156,"column":23},"end":{"line":167,"column":3}},"line":156},"7":{"name":"(anonymous_7)","decl":{"start":{"line":163,"column":104},"end":{"line":163,"column":105}},"loc":{"start":{"line":163,"column":110},"end":{"line":166,"column":5}},"line":163},"8":{"name":"handleListChange","decl":{"start":{"line":173,"column":11},"end":{"line":173,"column":27}},"loc":{"start":{"line":173,"column":31},"end":{"line":182,"column":3}},"line":173},"9":{"name":"(anonymous_9)","decl":{"start":{"line":175,"column":104},"end":{"line":175,"column":105}},"loc":{"start":{"line":175,"column":110},"end":{"line":179,"column":5}},"line":175},"10":{"name":"handleModalListChange","decl":{"start":{"line":188,"column":11},"end":{"line":188,"column":32}},"loc":{"start":{"line":188,"column":36},"end":{"line":199,"column":3}},"line":188},"11":{"name":"(anonymous_11)","decl":{"start":{"line":190,"column":104},"end":{"line":190,"column":105}},"loc":{"start":{"line":190,"column":110},"end":{"line":196,"column":5}},"line":190},"12":{"name":"executeSearch","decl":{"start":{"line":207,"column":11},"end":{"line":207,"column":24}},"loc":{"start":{"line":207,"column":34},"end":{"line":221,"column":3}},"line":207},"13":{"name":"(anonymous_13)","decl":{"start":{"line":210,"column":16},"end":{"line":210,"column":17}},"loc":{"start":{"line":210,"column":38},"end":{"line":212,"column":5}},"line":210}},"branchMap":{"0":{"loc":{"start":{"line":55,"column":4},"end":{"line":79,"column":5}},"type":"if","locations":[{"start":{"line":55,"column":4},"end":{"line":79,"column":5}},{"start":{"line":68,"column":11},"end":{"line":79,"column":5}}],"line":55},"1":{"loc":{"start":{"line":97,"column":8},"end":{"line":109,"column":9}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":109,"column":9}},{"start":{},"end":{}}],"line":97},"2":{"loc":{"start":{"line":97,"column":12},"end":{"line":97,"column":44}},"type":"binary-expr","locations":[{"start":{"line":97,"column":12},"end":{"line":97,"column":19}},{"start":{"line":97,"column":23},"end":{"line":97,"column":44}}],"line":97},"3":{"loc":{"start":{"line":98,"column":35},"end":{"line":98,"column":72}},"type":"cond-expr","locations":[{"start":{"line":98,"column":45},"end":{"line":98,"column":59}},{"start":{"line":98,"column":62},"end":{"line":98,"column":72}}],"line":98},"4":{"loc":{"start":{"line":100,"column":24},"end":{"line":100,"column":86}},"type":"binary-expr","locations":[{"start":{"line":100,"column":24},"end":{"line":100,"column":40}},{"start":{"line":100,"column":45},"end":{"line":100,"column":86}}],"line":100},"5":{"loc":{"start":{"line":145,"column":4},"end":{"line":147,"column":5}},"type":"if","locations":[{"start":{"line":145,"column":4},"end":{"line":147,"column":5}},{"start":{},"end":{}}],"line":145},"6":{"loc":{"start":{"line":158,"column":4},"end":{"line":161,"column":5}},"type":"if","locations":[{"start":{"line":158,"column":4},"end":{"line":161,"column":5}},{"start":{},"end":{}}],"line":158},"7":{"loc":{"start":{"line":165,"column":19},"end":{"line":165,"column":78}},"type":"binary-expr","locations":[{"start":{"line":165,"column":19},"end":{"line":165,"column":35}},{"start":{"line":165,"column":40},"end":{"line":165,"column":78}}],"line":165},"8":{"loc":{"start":{"line":176,"column":6},"end":{"line":178,"column":7}},"type":"if","locations":[{"start":{"line":176,"column":6},"end":{"line":178,"column":7}},{"start":{},"end":{}}],"line":176},"9":{"loc":{"start":{"line":176,"column":9},"end":{"line":176,"column":105}},"type":"binary-expr","locations":[{"start":{"line":176,"column":10},"end":{"line":176,"column":20}},{"start":{"line":176,"column":24},"end":{"line":176,"column":51}},{"start":{"line":176,"column":57},"end":{"line":176,"column":73}},{"start":{"line":176,"column":77},"end":{"line":176,"column":104}}],"line":176},"10":{"loc":{"start":{"line":191,"column":6},"end":{"line":195,"column":7}},"type":"if","locations":[{"start":{"line":191,"column":6},"end":{"line":195,"column":7}},{"start":{"line":193,"column":12},"end":{"line":195,"column":7}}],"line":191},"11":{"loc":{"start":{"line":193,"column":12},"end":{"line":195,"column":7}},"type":"if","locations":[{"start":{"line":193,"column":12},"end":{"line":195,"column":7}},{"start":{},"end":{}}],"line":193},"12":{"loc":{"start":{"line":213,"column":4},"end":{"line":213,"column":52}},"type":"if","locations":[{"start":{"line":213,"column":4},"end":{"line":213,"column":52}},{"start":{},"end":{}}],"line":213},"13":{"loc":{"start":{"line":215,"column":4},"end":{"line":219,"column":5}},"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":219,"column":5}},{"start":{"line":217,"column":9},"end":{"line":219,"column":5}}],"line":215},"14":{"loc":{"start":{"line":226,"column":11},"end":{"line":226,"column":52}},"type":"cond-expr","locations":[{"start":{"line":226,"column":35},"end":{"line":226,"column":36}},{"start":{"line":226,"column":39},"end":{"line":226,"column":52}}],"line":226},"15":{"loc":{"start":{"line":231,"column":9},"end":{"line":232,"column":70}},"type":"binary-expr","locations":[{"start":{"line":231,"column":9},"end":{"line":231,"column":27}},{"start":{"line":232,"column":10},"end":{"line":232,"column":70}}],"line":231}},"s":{"0":10,"1":10,"2":10,"3":10,"4":36,"5":16,"6":16,"7":20,"8":10,"9":20,"10":40,"11":36,"12":36,"13":36,"14":36,"15":10,"16":10,"17":2,"18":0,"19":2,"20":2,"21":0,"22":0,"23":2,"24":2,"25":4,"26":2,"27":2,"28":4,"29":2,"30":2,"31":2,"32":2,"33":2,"34":4,"35":1,"36":3,"37":0,"38":2,"39":2,"40":4,"41":4,"42":3,"43":4,"44":0,"45":4,"46":4,"47":3,"48":1,"49":10,"50":10,"51":10,"52":10},"f":{"0":10,"1":36,"2":20,"3":40,"4":10,"5":2,"6":2,"7":4,"8":2,"9":4,"10":2,"11":4,"12":4,"13":3},"b":{"0":[16,20],"1":[36,4],"2":[40,20],"3":[20,16],"4":[36,10],"5":[0,2],"6":[0,2],"7":[4,0],"8":[2,2],"9":[4,0,4,4],"10":[1,3],"11":[0,3],"12":[0,4],"13":[3,1],"14":[0,10],"15":[10,4]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bf3cb73ee2ae4157558929ca85f213b02a7b88af"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeFacet.jsx": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeFacet.jsx","statementMap":{"0":{"start":{"line":10,"column":17},"end":{"line":10,"column":41}},"1":{"start":{"line":10,"column":23},"end":{"line":10,"column":41}},"2":{"start":{"line":11,"column":17},"end":{"line":11,"column":59}},"3":{"start":{"line":12,"column":19},"end":{"line":12,"column":84}},"4":{"start":{"line":13,"column":30},"end":{"line":13,"column":48}},"5":{"start":{"line":14,"column":2},"end":{"line":45,"column":4}}},"fnMap":{"0":{"name":"RangeFacet","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":19}},"loc":{"start":{"line":9,"column":93},"end":{"line":46,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":17},"end":{"line":10,"column":18}},"loc":{"start":{"line":10,"column":23},"end":{"line":10,"column":41}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":19},"end":{"line":12,"column":84}},"type":"cond-expr","locations":[{"start":{"line":12,"column":67},"end":{"line":12,"column":71}},{"start":{"line":12,"column":74},"end":{"line":12,"column":84}}],"line":12},"1":{"loc":{"start":{"line":19,"column":11},"end":{"line":23,"column":11}},"type":"binary-expr","locations":[{"start":{"line":19,"column":11},"end":{"line":19,"column":18}},{"start":{"line":20,"column":12},"end":{"line":22,"column":19}}],"line":19},"2":{"loc":{"start":{"line":24,"column":11},"end":{"line":28,"column":11}},"type":"binary-expr","locations":[{"start":{"line":24,"column":11},"end":{"line":24,"column":17}},{"start":{"line":25,"column":12},"end":{"line":27,"column":19}}],"line":24},"3":{"loc":{"start":{"line":33,"column":11},"end":{"line":35,"column":11}},"type":"binary-expr","locations":[{"start":{"line":33,"column":11},"end":{"line":33,"column":23}},{"start":{"line":33,"column":27},"end":{"line":33,"column":49}},{"start":{"line":34,"column":12},"end":{"line":34,"column":77}}],"line":33},"4":{"loc":{"start":{"line":36,"column":11},"end":{"line":38,"column":11}},"type":"binary-expr","locations":[{"start":{"line":36,"column":11},"end":{"line":36,"column":23}},{"start":{"line":36,"column":27},"end":{"line":36,"column":52}},{"start":{"line":37,"column":12},"end":{"line":37,"column":113}}],"line":36},"5":{"loc":{"start":{"line":39,"column":11},"end":{"line":41,"column":11}},"type":"binary-expr","locations":[{"start":{"line":39,"column":11},"end":{"line":39,"column":23}},{"start":{"line":39,"column":27},"end":{"line":39,"column":51}},{"start":{"line":40,"column":12},"end":{"line":40,"column":76}}],"line":39}},"s":{"0":28,"1":1,"2":28,"3":28,"4":28,"5":28},"f":{"0":28,"1":1},"b":{"0":[3,25],"1":[28,15],"2":[28,13],"3":[28,14,3],"4":[28,14,8],"5":[28,14,3]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6fe6594f3995556023fa1f02937a222dfeb8bb9d"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeSelect.jsx": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeSelect.jsx","statementMap":{"0":{"start":{"line":9,"column":22},"end":{"line":9,"column":46}},"1":{"start":{"line":12,"column":4},"end":{"line":12,"column":24}},"2":{"start":{"line":14,"column":4},"end":{"line":16,"column":7}},"3":{"start":{"line":15,"column":6},"end":{"line":15,"column":41}},"4":{"start":{"line":18,"column":4},"end":{"line":18,"column":52}},"5":{"start":{"line":18,"column":32},"end":{"line":18,"column":52}},"6":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"7":{"start":{"line":20,"column":4},"end":{"line":24,"column":5}},"8":{"start":{"line":21,"column":6},"end":{"line":21,"column":60}},"9":{"start":{"line":23,"column":6},"end":{"line":23,"column":49}},"10":{"start":{"line":27,"column":15},"end":{"line":27,"column":58}},"11":{"start":{"line":29,"column":23},"end":{"line":29,"column":25}},"12":{"start":{"line":30,"column":16},"end":{"line":30,"column":18}},"13":{"start":{"line":31,"column":2},"end":{"line":42,"column":3}},"14":{"start":{"line":32,"column":4},"end":{"line":41,"column":7}},"15":{"start":{"line":33,"column":19},"end":{"line":36,"column":7}},"16":{"start":{"line":37,"column":6},"end":{"line":37,"column":27}},"17":{"start":{"line":38,"column":6},"end":{"line":40,"column":7}},"18":{"start":{"line":39,"column":8},"end":{"line":39,"column":36}},"19":{"start":{"line":44,"column":2},"end":{"line":63,"column":4}},"20":{"start":{"line":53,"column":12},"end":{"line":53,"column":42}}},"fnMap":{"0":{"name":"RangeSelect","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":20}},"loc":{"start":{"line":6,"column":47},"end":{"line":64,"column":1}},"line":6},"1":{"name":"handleChange","decl":{"start":{"line":11,"column":11},"end":{"line":11,"column":23}},"loc":{"start":{"line":11,"column":32},"end":{"line":25,"column":3}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":15},"end":{"line":14,"column":16}},"loc":{"start":{"line":14,"column":37},"end":{"line":16,"column":5}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":32,"column":15},"end":{"line":32,"column":16}},"loc":{"start":{"line":32,"column":37},"end":{"line":41,"column":5}},"line":32},"4":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":20},"end":{"line":52,"column":21}},"loc":{"start":{"line":52,"column":41},"end":{"line":54,"column":11}},"line":52}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":4},"end":{"line":18,"column":52}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":18,"column":52}},{"start":{},"end":{}}],"line":18},"1":{"loc":{"start":{"line":20,"column":4},"end":{"line":24,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":24,"column":5}},{"start":{"line":22,"column":9},"end":{"line":24,"column":5}}],"line":20},"2":{"loc":{"start":{"line":31,"column":2},"end":{"line":42,"column":3}},"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":42,"column":3}},{"start":{},"end":{}}],"line":31},"3":{"loc":{"start":{"line":34,"column":16},"end":{"line":34,"column":50}},"type":"binary-expr","locations":[{"start":{"line":34,"column":16},"end":{"line":34,"column":35}},{"start":{"line":34,"column":39},"end":{"line":34,"column":50}}],"line":34},"4":{"loc":{"start":{"line":38,"column":6},"end":{"line":40,"column":7}},"type":"if","locations":[{"start":{"line":38,"column":6},"end":{"line":40,"column":7}},{"start":{},"end":{}}],"line":38},"5":{"loc":{"start":{"line":38,"column":10},"end":{"line":38,"column":72}},"type":"binary-expr","locations":[{"start":{"line":38,"column":10},"end":{"line":38,"column":26}},{"start":{"line":38,"column":31},"end":{"line":38,"column":72}}],"line":38}},"s":{"0":3,"1":2,"2":2,"3":3,"4":2,"5":1,"6":2,"7":2,"8":1,"9":1,"10":3,"11":3,"12":3,"13":3,"14":2,"15":4,"16":4,"17":4,"18":1,"19":3,"20":2},"f":{"0":3,"1":2,"2":3,"3":4,"4":2},"b":{"0":[1,1],"1":[1,1],"2":[2,1],"3":[4,4],"4":[1,3],"5":[4,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d8a97d192b0351663d82c8f06267246a1087446d"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeSlider.jsx": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\components\\RangeSlider.jsx","statementMap":{"0":{"start":{"line":8,"column":22},"end":{"line":8,"column":46}},"1":{"start":{"line":11,"column":19},"end":{"line":11,"column":73}},"2":{"start":{"line":12,"column":19},"end":{"line":12,"column":73}},"3":{"start":{"line":15,"column":4},"end":{"line":15,"column":33}},"4":{"start":{"line":16,"column":4},"end":{"line":16,"column":33}},"5":{"start":{"line":17,"column":4},"end":{"line":17,"column":18}},"6":{"start":{"line":20,"column":4},"end":{"line":29,"column":5}},"7":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"8":{"start":{"line":22,"column":8},"end":{"line":22,"column":56}},"9":{"start":{"line":24,"column":6},"end":{"line":26,"column":7}},"10":{"start":{"line":25,"column":8},"end":{"line":25,"column":56}},"11":{"start":{"line":27,"column":6},"end":{"line":27,"column":57}},"12":{"start":{"line":28,"column":6},"end":{"line":28,"column":19}},"13":{"start":{"line":31,"column":18},"end":{"line":31,"column":46}},"14":{"start":{"line":32,"column":21},"end":{"line":32,"column":44}},"15":{"start":{"line":33,"column":21},"end":{"line":33,"column":44}},"16":{"start":{"line":35,"column":4},"end":{"line":45,"column":5}},"17":{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},"18":{"start":{"line":38,"column":8},"end":{"line":38,"column":56}},"19":{"start":{"line":40,"column":6},"end":{"line":42,"column":7}},"20":{"start":{"line":41,"column":8},"end":{"line":41,"column":56}},"21":{"start":{"line":43,"column":6},"end":{"line":43,"column":54}},"22":{"start":{"line":44,"column":6},"end":{"line":44,"column":19}},"23":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"24":{"start":{"line":49,"column":6},"end":{"line":49,"column":54}},"25":{"start":{"line":50,"column":6},"end":{"line":50,"column":54}},"26":{"start":{"line":51,"column":6},"end":{"line":51,"column":60}},"27":{"start":{"line":52,"column":6},"end":{"line":52,"column":19}},"28":{"start":{"line":55,"column":4},"end":{"line":55,"column":33}},"29":{"start":{"line":56,"column":4},"end":{"line":56,"column":33}},"30":{"start":{"line":57,"column":4},"end":{"line":57,"column":18}},"31":{"start":{"line":58,"column":4},"end":{"line":58,"column":16}},"32":{"start":{"line":62,"column":4},"end":{"line":62,"column":47}},"33":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"34":{"start":{"line":64,"column":6},"end":{"line":64,"column":44}},"35":{"start":{"line":66,"column":4},"end":{"line":68,"column":5}},"36":{"start":{"line":67,"column":6},"end":{"line":67,"column":44}},"37":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"38":{"start":{"line":73,"column":6},"end":{"line":73,"column":13}},"39":{"start":{"line":75,"column":4},"end":{"line":75,"column":51}},"40":{"start":{"line":77,"column":4},"end":{"line":77,"column":52}},"41":{"start":{"line":77,"column":32},"end":{"line":77,"column":52}},"42":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"43":{"start":{"line":79,"column":4},"end":{"line":83,"column":5}},"44":{"start":{"line":80,"column":6},"end":{"line":80,"column":60}},"45":{"start":{"line":82,"column":6},"end":{"line":82,"column":49}},"46":{"start":{"line":86,"column":15},"end":{"line":86,"column":58}},"47":{"start":{"line":88,"column":17},"end":{"line":88,"column":21}},"48":{"start":{"line":89,"column":17},"end":{"line":89,"column":21}},"49":{"start":{"line":90,"column":2},"end":{"line":107,"column":3}},"50":{"start":{"line":91,"column":24},"end":{"line":91,"column":52}},"51":{"start":{"line":92,"column":4},"end":{"line":92,"column":40}},"52":{"start":{"line":93,"column":4},"end":{"line":93,"column":40}},"53":{"start":{"line":94,"column":9},"end":{"line":107,"column":3}},"54":{"start":{"line":95,"column":4},"end":{"line":106,"column":7}},"55":{"start":{"line":97,"column":6},"end":{"line":105,"column":7}},"56":{"start":{"line":98,"column":8},"end":{"line":98,"column":42}},"57":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"58":{"start":{"line":100,"column":10},"end":{"line":100,"column":31}},"59":{"start":{"line":102,"column":8},"end":{"line":104,"column":9}},"60":{"start":{"line":103,"column":10},"end":{"line":103,"column":31}},"61":{"start":{"line":108,"column":13},"end":{"line":108,"column":38}},"62":{"start":{"line":110,"column":42},"end":{"line":110,"column":71}},"63":{"start":{"line":111,"column":36},"end":{"line":111,"column":54}},"64":{"start":{"line":112,"column":36},"end":{"line":112,"column":54}},"65":{"start":{"line":113,"column":36},"end":{"line":113,"column":60}},"66":{"start":{"line":114,"column":36},"end":{"line":114,"column":60}},"67":{"start":{"line":115,"column":30},"end":{"line":115,"column":42}},"68":{"start":{"line":117,"column":27},"end":{"line":125,"column":3}},"69":{"start":{"line":119,"column":4},"end":{"line":119,"column":42}},"70":{"start":{"line":120,"column":4},"end":{"line":120,"column":27}},"71":{"start":{"line":121,"column":4},"end":{"line":121,"column":27}},"72":{"start":{"line":122,"column":4},"end":{"line":122,"column":33}},"73":{"start":{"line":123,"column":4},"end":{"line":123,"column":33}},"74":{"start":{"line":124,"column":4},"end":{"line":124,"column":18}},"75":{"start":{"line":126,"column":2},"end":{"line":126,"column":77}},"76":{"start":{"line":128,"column":2},"end":{"line":155,"column":3}},"77":{"start":{"line":137,"column":27},"end":{"line":137,"column":67}},"78":{"start":{"line":143,"column":27},"end":{"line":143,"column":67}}},"fnMap":{"0":{"name":"RangeSlider","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":20}},"loc":{"start":{"line":6,"column":45},"end":{"line":156,"column":1}},"line":6},"1":{"name":"validateInputIsOk","decl":{"start":{"line":10,"column":11},"end":{"line":10,"column":28}},"loc":{"start":{"line":10,"column":31},"end":{"line":59,"column":3}},"line":10},"2":{"name":"handleSlide","decl":{"start":{"line":61,"column":11},"end":{"line":61,"column":22}},"loc":{"start":{"line":61,"column":33},"end":{"line":69,"column":3}},"line":61},"3":{"name":"handleGo","decl":{"start":{"line":71,"column":11},"end":{"line":71,"column":19}},"loc":{"start":{"line":71,"column":22},"end":{"line":84,"column":3}},"line":71},"4":{"name":"(anonymous_4)","decl":{"start":{"line":95,"column":14},"end":{"line":95,"column":15}},"loc":{"start":{"line":95,"column":36},"end":{"line":106,"column":5}},"line":95},"5":{"name":"(anonymous_5)","decl":{"start":{"line":117,"column":27},"end":{"line":117,"column":28}},"loc":{"start":{"line":117,"column":33},"end":{"line":125,"column":3}},"line":117},"6":{"name":"(anonymous_6)","decl":{"start":{"line":137,"column":22},"end":{"line":137,"column":23}},"loc":{"start":{"line":137,"column":27},"end":{"line":137,"column":67}},"line":137},"7":{"name":"(anonymous_7)","decl":{"start":{"line":143,"column":22},"end":{"line":143,"column":23}},"loc":{"start":{"line":143,"column":27},"end":{"line":143,"column":67}},"line":143}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":29,"column":5}},{"start":{},"end":{}}],"line":20},"1":{"loc":{"start":{"line":20,"column":7},"end":{"line":20,"column":41}},"type":"binary-expr","locations":[{"start":{"line":20,"column":7},"end":{"line":20,"column":22}},{"start":{"line":20,"column":26},"end":{"line":20,"column":41}}],"line":20},"2":{"loc":{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},"type":"if","locations":[{"start":{"line":21,"column":6},"end":{"line":23,"column":7}},{"start":{},"end":{}}],"line":21},"3":{"loc":{"start":{"line":24,"column":6},"end":{"line":26,"column":7}},"type":"if","locations":[{"start":{"line":24,"column":6},"end":{"line":26,"column":7}},{"start":{},"end":{}}],"line":24},"4":{"loc":{"start":{"line":35,"column":4},"end":{"line":45,"column":5}},"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":45,"column":5}},{"start":{},"end":{}}],"line":35},"5":{"loc":{"start":{"line":35,"column":7},"end":{"line":36,"column":56}},"type":"binary-expr","locations":[{"start":{"line":35,"column":7},"end":{"line":35,"column":25}},{"start":{"line":35,"column":29},"end":{"line":35,"column":55}},{"start":{"line":36,"column":8},"end":{"line":36,"column":26}},{"start":{"line":36,"column":30},"end":{"line":36,"column":56}}],"line":35},"6":{"loc":{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},"type":"if","locations":[{"start":{"line":37,"column":6},"end":{"line":39,"column":7}},{"start":{},"end":{}}],"line":37},"7":{"loc":{"start":{"line":37,"column":9},"end":{"line":37,"column":57}},"type":"binary-expr","locations":[{"start":{"line":37,"column":9},"end":{"line":37,"column":27}},{"start":{"line":37,"column":31},"end":{"line":37,"column":57}}],"line":37},"8":{"loc":{"start":{"line":40,"column":6},"end":{"line":42,"column":7}},"type":"if","locations":[{"start":{"line":40,"column":6},"end":{"line":42,"column":7}},{"start":{},"end":{}}],"line":40},"9":{"loc":{"start":{"line":40,"column":9},"end":{"line":40,"column":57}},"type":"binary-expr","locations":[{"start":{"line":40,"column":9},"end":{"line":40,"column":27}},{"start":{"line":40,"column":31},"end":{"line":40,"column":57}}],"line":40},"10":{"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},{"start":{},"end":{}}],"line":48},"11":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":5}},{"start":{},"end":{}}],"line":63},"12":{"loc":{"start":{"line":66,"column":4},"end":{"line":68,"column":5}},"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":68,"column":5}},{"start":{},"end":{}}],"line":66},"13":{"loc":{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":74,"column":5}},{"start":{},"end":{}}],"line":72},"14":{"loc":{"start":{"line":77,"column":4},"end":{"line":77,"column":52}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":52}},{"start":{},"end":{}}],"line":77},"15":{"loc":{"start":{"line":79,"column":4},"end":{"line":83,"column":5}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":83,"column":5}},{"start":{"line":81,"column":9},"end":{"line":83,"column":5}}],"line":79},"16":{"loc":{"start":{"line":90,"column":2},"end":{"line":107,"column":3}},"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":107,"column":3}},{"start":{"line":94,"column":9},"end":{"line":107,"column":3}}],"line":90},"17":{"loc":{"start":{"line":94,"column":9},"end":{"line":107,"column":3}},"type":"if","locations":[{"start":{"line":94,"column":9},"end":{"line":107,"column":3}},{"start":{},"end":{}}],"line":94},"18":{"loc":{"start":{"line":97,"column":6},"end":{"line":105,"column":7}},"type":"if","locations":[{"start":{"line":97,"column":6},"end":{"line":105,"column":7}},{"start":{},"end":{}}],"line":97},"19":{"loc":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},{"start":{},"end":{}}],"line":99},"20":{"loc":{"start":{"line":99,"column":11},"end":{"line":99,"column":51}},"type":"binary-expr","locations":[{"start":{"line":99,"column":11},"end":{"line":99,"column":27}},{"start":{"line":99,"column":31},"end":{"line":99,"column":51}}],"line":99},"21":{"loc":{"start":{"line":102,"column":8},"end":{"line":104,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":104,"column":9}},{"start":{},"end":{}}],"line":102},"22":{"loc":{"start":{"line":102,"column":11},"end":{"line":102,"column":51}},"type":"binary-expr","locations":[{"start":{"line":102,"column":11},"end":{"line":102,"column":27}},{"start":{"line":102,"column":31},"end":{"line":102,"column":51}}],"line":102}},"s":{"0":10,"1":6,"2":6,"3":6,"4":6,"5":6,"6":6,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":5,"14":5,"15":5,"16":5,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":4,"24":1,"25":1,"26":1,"27":1,"28":3,"29":3,"30":3,"31":3,"32":0,"33":0,"34":0,"35":0,"36":0,"37":6,"38":3,"39":3,"40":3,"41":1,"42":3,"43":3,"44":2,"45":1,"46":10,"47":10,"48":10,"49":10,"50":9,"51":9,"52":9,"53":1,"54":1,"55":4,"56":4,"57":4,"58":1,"59":4,"60":4,"61":10,"62":10,"63":10,"64":10,"65":10,"66":10,"67":10,"68":10,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":10,"76":10,"77":2,"78":2},"f":{"0":10,"1":6,"2":0,"3":6,"4":4,"5":2,"6":2,"7":2},"b":{"0":[1,5],"1":[6,5],"2":[1,0],"3":[1,0],"4":[1,4],"5":[5,4,4,4],"6":[1,0],"7":[1,0],"8":[1,0],"9":[1,0],"10":[1,3],"11":[0,0],"12":[0,0],"13":[3,3],"14":[1,2],"15":[2,1],"16":[9,1],"17":[1,0],"18":[4,0],"19":[1,3],"20":[4,3],"21":[4,0],"22":[4,3]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"28252ddc50401b2650ba82bbd3b7785252adbec0"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\test\\setup_en.js": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\test\\setup_en.js","statementMap":{"0":{"start":{"line":1,"column":10},"end":{"line":1,"column":209}},"1":{"start":{"line":2,"column":10},"end":{"line":2,"column":39}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":20}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a3b2661836dd95d28e0ad60a50d33311d7c5bded"} +,"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\test\\setup_jp.js": {"path":"F:\\Virtualbox\\weko_share_data\\github\\weko-react\\app-facet-search\\src\\test\\setup_jp.js","statementMap":{"0":{"start":{"line":1,"column":10},"end":{"line":1,"column":205}},"1":{"start":{"line":2,"column":10},"end":{"line":2,"column":39}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":20}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2},"f":{},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c786f7596e03add4ed75e25aac7576199142c213"} +} diff --git a/app-facet-search/coverage/lcov-report/base.css b/app-facet-search/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/app-facet-search/coverage/lcov-report/block-navigation.js b/app-facet-search/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/app-facet-search/coverage/lcov-report/favicon.png b/app-facet-search/coverage/lcov-report/favicon.png new file mode 100644 index 0000000..c1525b8 Binary files /dev/null and b/app-facet-search/coverage/lcov-report/favicon.png differ diff --git a/app-facet-search/coverage/lcov-report/index.html b/app-facet-search/coverage/lcov-report/index.html new file mode 100644 index 0000000..a7a74d2 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 96.38% + Statements + 267/277 +
+ + +
+ 87.87% + Branches + 145/165 +
+ + +
+ 97.87% + Functions + 46/47 +
+ + +
+ 96.66% + Lines + 261/270 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
100%110/110100%56/56100%18/18100%107/107
src/components +
+
93.71%149/15981.65%89/10996.55%28/2994.19%146/155
src/test +
+
100%8/8100%0/0100%0/0100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/prettify.css b/app-facet-search/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/app-facet-search/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/app-facet-search/coverage/lcov-report/prettify.js b/app-facet-search/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/app-facet-search/coverage/lcov-report/sort-arrow-sprite.png b/app-facet-search/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000..6ed6831 Binary files /dev/null and b/app-facet-search/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/app-facet-search/coverage/lcov-report/sorter.js b/app-facet-search/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/app-facet-search/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/app-facet-search/coverage/lcov-report/src/App.js.html b/app-facet-search/coverage/lcov-report/src/App.js.html new file mode 100644 index 0000000..71c9801 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/App.js.html @@ -0,0 +1,718 @@ + + + + + + Code coverage report for src/App.js + + + + + + + + + +
+
+

All files / src App.js

+
+ +
+ 100% + Statements + 110/110 +
+ + +
+ 100% + Branches + 56/56 +
+ + +
+ 100% + Functions + 18/18 +
+ + +
+ 100% + Lines + 107/107 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212  +  +  +  +  +  +  +  +3x +3x +3x +3x +  +  +  +  +  +  +7x +4x +  +  +  +  +  +  +  +  +4x +4x +4x +4x +  +  +  +4x +4x +4x +4x +4x +4x +4x +  +4x +2x +2x +2x +2x +2x +  +4x +4x +4x +4x +4x +4x +  +  +  +  +  +4x +  +4x +4x +4x +  +4x +  +  +2x +  +2x +  +  +2x +  +  +  +  +  +9x +9x +8x +46x +46x +46x +46x +29x +29x +29x +  +29x +16x +16x +16x +16x +63x +63x +  +18x +18x +45x +  +9x +9x +  +  +  +29x +4x +  +4x +7x +  +7x +  +3x +3x +  +  +  +  +  +  +  +9x +9x +46x +4x +  +  +  +  +  +  +4x +4x +  +  +  +6x +6x +  +  +  +  +14x +14x +14x +14x +14x +14x +14x +  +  +  +  +  +  +  +  +  +  +  +3x +2x +  +  +  +  +3x +6x +5x +  +  +  +  +3x +2x +2x +2x +14x +14x +2x +2x +  +  +  +2x +  +  +  +3x +2x +2x +2x +2x +2x +2x +  +  +  +  +3x +3x +3x +3x +3x +  +  + 
import 'rc-slider/assets/index.css';
+import 'rc-tooltip/assets/bootstrap.css';
+import './index.css';
+import React from "react";
+import fetch from "unfetch";
+import RangeFacet from "./components/RangeFacet";
+ 
+//Get all labels.
+const LABELS = {};
+let labels = document.getElementsByClassName("body-facet-search-label");
+for (let i = 0; i < labels.length; i++) {
+  LABELS[labels[i].id] = labels[i].value;
+}
+ 
+let facetSearchComponent;
+ 
+class FacetSearch extends React.Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      is_enable: false,
+      list_title: {},
+      list_facet: {},
+      list_order: {},
+      list_uiType: {},
+      list_isOpen: {},
+      list_displayNumber: {}
+    };
+    this.getTitleAndOrder = this.getTitleAndOrder.bind(this);
+    this.get_facet_search_list = this.get_facet_search_list.bind(this);
+    this.convertData = this.convertData.bind(this);
+    facetSearchComponent = this;
+  }
+ 
+  getTitleAndOrder() {
+    let titleLst = {};
+    let orderLst = {};
+    let uiTypeLst = {};
+    let isOpenLst = {};
+    let displayNumberLst = {};
+    fetch("/facet-search/get-title-and-order", {method: "POST"})
+      .then((r) => r.json())
+      .then((response) => {
+        if (response.status) {
+          titleLst = response.data.titles;
+          orderLst = response.data.order;
+          uiTypeLst = response.data.uiTypes;
+          isOpenLst = response.data.isOpens;
+          displayNumberLst = response.data.displayNumbers;
+        }
+        this.setState({ list_title: titleLst });
+        this.setState({ list_order: orderLst });
+        this.setState({ list_uiType: uiTypeLst });
+        this.setState({ list_isOpen: isOpenLst });
+        this.setState({ list_displayNumber: displayNumberLst });
+        this.setState({ is_enable: true });
+      });
+  }
+ 
+  get_facet_search_list() {
+ 
+    let search = new URLSearchParams(window.location.search);
+ 
+    let url = search.get('search_type') == 2 ? "/api/index/" : "/api/records/";
+    fetch(url + '?' + search.toString())
+      .then((r) => r.json())
+      .then((res) => {
+        if (search.get('search_type') == 2) {
+          // Index faceted search
+          
+          let aggregations = res && res.aggregations && res.aggregations.aggregations
+              ? res.aggregations.aggregations[0] : {};
+          this.convertData(aggregations);
+        } else {
+          // default faceted search
+          this.convertData(res && res.aggregations ? res.aggregations : {});
+        }
+      });
+  }
+ 
+  convertData(data) {
+    let list_facet = {};
+    if (data) {
+      Object.keys(data).map(function (name, k) {
+        let val = data[name][name] ? data[name][name] : data[name];
+        let hasBuckets = val["key"] && val["key"].hasOwnProperty("buckets");
+        hasBuckets = val.hasOwnProperty("buckets") || hasBuckets;
+        if (hasBuckets) {
+          list_facet[name] = val[name] ? val[name] : val;
+          console.log(val);
+          console.log(val[name]);
+          //START:temporary fix for JDCat
+          if (name != "Time Period(s)" && name != "Data Language" && name != "Access") {
+      	    let e = document.getElementById('lang-code');
+      	    let l = e.options[e.selectedIndex].value;
+      	    let tmp = list_facet[name];
+      	    for (let i = 0; i < tmp.buckets.length; i++) {
+      	      let a = tmp.buckets[i];
+              if ((l == "en") && ((a.key).charCodeAt(0) > 256 || (a.key).charCodeAt(a.key.length - 1) > 256)) {
+      	    	//delete list_facet[name].buckets[i];
+              list_facet[name].buckets.splice(i,1);
+              i--;
+      	      } else if ((l != "en") && ((a.key).charCodeAt(0) < 256 && (a.key).charCodeAt(a.key.length - 1) < 256)) {
+      	    	//delete list_facet[name].buckets[i];
+              list_facet[name].buckets.splice(i,1);
+              i--;
+      	      }
+      	    }
+          }
+          if (name == "Access"){
+      	    let tmp = list_facet[name];
+      
+      	    for (let i = 0; i < tmp.buckets.length; i++) {
+      	      let a = tmp.buckets[i];
+      
+      	      if (((a.key).charCodeAt(0) > 256 || (a.key).charCodeAt(a.key.length - 1) > 256)) {
+      	    	  //delete list_facet[name].buckets[i];
+                list_facet[name].buckets.splice(i,1);
+                i--;
+      	      } 
+      	    }
+          }
+          //END:temporary fix for JDCat
+        }
+      });
+    }
+    this.setState({list_facet: list_facet});
+    Object.keys(data).map(function (name, k) {
+      if(window.facetSearchFunctions[name + '_clearSliderValue']) {
+        window.facetSearchFunctions[name + '_clearSliderValue']();
+      }
+    });
+ 
+  }
+ 
+  componentDidMount() {
+    this.getTitleAndOrder();
+    this.get_facet_search_list();
+  }
+ 
+  render() {
+    const { is_enable, list_title, list_facet, list_order, list_uiType, list_isOpen, list_displayNumber} = this.state;
+    return (
+      <div>
+        {is_enable && (
+          <div className="facet-search break-word">
+            {Object.keys(list_order).map(function (order, key) {
+              const name = list_order[order];
+              const item = list_facet[name];
+              const nameshow = list_title[name];
+              const isOpen = list_isOpen[name];
+              const uiType = list_uiType[name];
+              const displayNumber = list_displayNumber[name];
+              return (
+                <RangeFacet item={item} nameshow={nameshow} name={name} key={key} labels={LABELS} isInitOpen={isOpen} uiType={uiType} displayNumber={displayNumber} />
+              );
+            })}
+          </div>
+        )}
+      </div>
+    );
+  }
+}
+ 
+// Allows external parties to retrieve whether or not a Facet search item is loaded on the screen.
+const useFacetSearch = () => {
+  return facetSearchComponent != null;
+}
+ 
+// Change Facet's search criteria. 
+// The argument Data assumes Json information about Facet searches aggregated by Elasticsearch.
+const resetFacetData = (data) => {
+  if(facetSearchComponent != null) {
+    facetSearchComponent.convertData(data);
+  }
+}
+ 
+// Used to retrieve Facet's narrowing status from external sources.
+const getFacetSearchCondition = () => {
+  let search = new URLSearchParams(window.location.search);
+  let result = new URLSearchParams();
+  Object.keys(facetSearchComponent.state.list_order).map(function (order, k) {
+    let name = facetSearchComponent.state.list_order[order];
+    if(search.has(name)) {
+      for(var value of search.getAll(name)) {
+        result.append(name, value);
+      }
+    }
+  });
+  return result;
+}
+ 
+// Used to change State during testing. Do not use otherwise.
+const setStateForTest = (json_data) => {
+  facetSearchComponent.setState({ list_title: json_data.data.titles });
+  facetSearchComponent.setState({ list_order: json_data.data.order });
+  facetSearchComponent.setState({ list_uiType: json_data.data.uiTypes });
+  facetSearchComponent.setState({ list_isOpen: json_data.data.isOpens });
+  facetSearchComponent.setState({ list_displayNumber: json_data.data.displayNumbers });
+  facetSearchComponent.setState({ is_enable: true });
+}
+ 
+ 
+// Put the defined function in the key for the global variable of the window object.
+window.facetSearchFunctions = {};
+window.facetSearchFunctions.setStateForTest = setStateForTest;
+window.facetSearchFunctions.useFacetSearch = useFacetSearch;
+window.facetSearchFunctions.resetFacetData = resetFacetData;
+window.facetSearchFunctions.getFacetSearchCondition = getFacetSearchCondition;
+ 
+export default FacetSearch;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/components/RangeCheckboxList.jsx.html b/app-facet-search/coverage/lcov-report/src/components/RangeCheckboxList.jsx.html new file mode 100644 index 0000000..c145b05 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/components/RangeCheckboxList.jsx.html @@ -0,0 +1,805 @@ + + + + + + Code coverage report for src/components/RangeCheckboxList.jsx + + + + + + + + + +
+
+

All files / src/components RangeCheckboxList.jsx

+
+ +
+ 90.56% + Statements + 48/53 +
+ + +
+ 79.41% + Branches + 27/34 +
+ + +
+ 100% + Functions + 14/14 +
+ + +
+ 92.3% + Lines + 48/52 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +  +  +10x +10x +  +  +  +  +  +  +  +  +  +  +10x +36x +  +16x +16x +  +  +  +  +  +  +  +  +  +  +  +20x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +20x +  +40x +36x +36x +36x +36x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +10x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +2x +  +  +  +  +  +  +  +  +  +2x +  +  +  +2x +2x +  +4x +  +  +  +  +  +  +  +  +2x +2x +4x +2x +  +  +2x +2x +  +  +  +  +  +  +  +2x +2x +4x +1x +3x +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +4x +  +4x +3x +  +4x +4x +4x +3x +  +1x +  +  +  +  +10x +10x +  +10x +10x +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import "rc-slider/assets/index.css";
+import "rc-tooltip/assets/bootstrap.css";
+import React, { useState } from "react";
+//import reSearchFacet from '../App.js';
+ 
+/**
+ * A UI component that displays faceted items as a list of checkboxes.
+ * This part consists of a list portion and a modal portion.
+ * 
+ * <List part>
+ * The List portion displays a list of checkboxes with the number of displayNumber
+ * set in the admin panel. If the number of faceted items is greater than the
+ * number of displayNumber, a link to display the Modal is displayed.
+ * 
+ * The checkboxes displayed in the List section are narrowed down by facet item
+ * at the same time as Click is performed.
+ * 
+ * 
+ * <Modal part>
+ * In the modal section, all faceted items are displayed in a modal. 
+ * Since scrolling is used, there is no limit to the number of items.
+ * The number of display columns is also changed according to the screen size to be displayed.
+ * 
+ * In the modal portion, no narrowing is performed until the search button is pressed.
+ * Multiple items can be selected and narrowed down in a batch.
+ * 
+ * The modal portion can be closed by pressing the Cancel button or clicking 
+ * on the portion outside the modal. The facet items that were selected before 
+ * the refinement are cleared when the modal is closed.
+ * 
+ * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count).
+ * @param {string} name English name of facet item.
+ * @param {array} labels Array of labels used in translation.
+ * @param {integer} displayNumber Number of items displayed in the list.
+ * 
+ * @author knowledge labo yamada
+ */
+function RangeCheckboxList({ values, name, labels, displayNumber }) {
+  const [listCheckedItems, setListCheckedItems] = useState({});
+ 
+  //If there is a space in the id attribute, it cannot be searched by ID, so escape it.
+  let facet_item_id = "id_" + name + "_chkbox";
+  let facet_item_id_for_search = CSS.escape(facet_item_id);
+ 
+  /**
+   * Returns the DOM representing the checkbox.
+   * 
+   * @param {string} id ID of the checkbox.
+   * @param {string} value Value of the checkbox.
+   * @param {boolean} checked The selected state of the checkbox.
+   * @param {function} onChange Process when the check box is clicked, which is set only when List is displayed.
+   * @returns DOM representing a checkbox.
+   */
+  const CheckBox = ({ id, value, checked, onChange}) => {
+    if(onChange !=null) {
+      //for lists
+      listCheckedItems[id] = checked;
+      return (
+        <input
+          id={id}
+          className="facet-chbox"
+          type="checkbox"
+          checked={listCheckedItems[id]}
+          onChange={onChange}
+          value={value}
+        />
+      )
+    } else {
+      //for Modal
+      return (
+        <input
+          id={id}
+          className="facet-chbox"
+          type="checkbox"
+          defaultChecked={checked}
+          value={value}
+        />
+      )
+    }
+ 
+  }
+ 
+  /**
+   * Returns the DOM of a list of checkboxes.
+   * This function is used for both List and Modal. The parameter isModal controls which use is made of this function.
+   * 
+   * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count).
+   * @param {string} name English name of facet item.
+   * @param {bool} isModal True for modal use. false for list use.
+   * @param {integer} displayNumber Number of items displayed in the list.
+   * @param {function} onChange Process when the check box is clicked, which is set only when List is displayed.
+   * @returns DOM representing a checkbox list.
+   */
+  const CheckBoxList = ({ values, name, isModal, displayNumber, onChange}) => {
+    return (
+      values.map((subitem,index) => {
+        if (isModal || index < displayNumber) {
+          let id = "id_" + name + (isModal ? "_chkbox_mdl_" : "_chkbox_") + index;
+          let label = subitem.key + "(" + subitem.doc_count + ")";
+          let checked = search.get(name) &&  search.getAll(name).includes(subitem.key);
+          return (
+            <div key={id}>
+              <label htmlFor={id} >
+                <CheckBox id={id} value={subitem.key} checked={checked} key={id} onChange={onChange} />
+                {label}
+              </label>
+            </div>
+          )
+        }
+      })
+    )
+  }
+ 
+  /**
+   * Returns the modal DOM.
+   * 
+   * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count).
+   * @param {string} name English name of facet item.
+   * @param {bool} modalId ID set for the modal.
+   * @returns Modal DOM
+   */
+  const ModalCheckboxList = ({ values, name, modalId }) => {
+    return (
+      <div key={modalId} className="chbox-mdl" id={modalId}>
+        <a className="overlay" onClick={closeModal} modalId={modalId}></a>
+        <div className="window">
+          <div className="content">
+            <div className="list">
+              <CheckBoxList values={values} name={name} isModal={true} />
+            </div>
+            <div className="footer">
+              <a onClick={closeModal} modalId={modalId}>{labels['cancel']}</a>
+              <button type="button" className="btn btn-primary" onClick={handleModalListChange} modalId={modalId}>{labels['search']}</button>
+            </div>
+          </div>
+        </div>
+      </div>
+    )
+  };
+ 
+  /**
+   * Called to close the modal.
+   */
+  function closeModal(e){
+    Iif(e == null){
+      return;
+    }
+    document.getElementById(e.target.getAttribute('modalId')).classList.remove("is-active");
+  }
+ 
+  /**
+   * Called to open a modal.
+   * Reconfigure it to select only the checkboxes that have been narrowed down 
+   * from the parameters of the URL at the time before displaying.
+   */
+  function openModal(e){
+ 
+    Iif(e == null){
+        console.log("event == null" );
+        return;
+    }
+    document.getElementById(e.target.getAttribute('modalId')).classList.add("is-active");
+    document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => {
+      //el.checked = params.indexOf(name + "=" + el.value)!= -1;
+      el.checked = search.get(name) &&  search.getAll(name).includes(el.value);
+    });
+  }
+ 
+  /**
+   * Processing when a check box is selected when the List is displayed. The search items of 
+   * the newly selected check box are added to the parameter to narrow down the search.
+   */
+  function handleListChange(e) {
+    const targets = [];
+    document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => {
+      if((el.checked && e.target.value !== el.value) || (e.target.checked && e.target.value === el.value)){
+        targets.push({label: name, value: el.value});
+      }
+    });
+    setListCheckedItems({...listCheckedItems, [e.target.id]: e.target.checked});
+    executeSearch(targets);
+  }
+  
+  /**
+   * When the search button is pressed during modal display, a callout difference srere. 
+   * The search item for the newly selected check box is added to the parameters and a narrowed search is performed.
+   */
+  function handleModalListChange(e) {
+    const targets = [];
+    document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => {
+      if(el.checked){
+        targets.push({label: name, value: el.value});
+      }else Iif(listCheckedItems[el.id]){
+        setListCheckedItems({...listCheckedItems, [el.id]: el.checked});
+      }
+    });
+    executeSearch(targets);
+    document.getElementById(e.target.getAttribute('modalId')).classList.remove("is-active");
+  }
+  
+  /**
+   * Narrowing is performed based on the narrowing target specified in this facet item.
+   * Parameters other than this facet item are used as is.
+   * 
+   * @param {array} targets Parameters to be refined by this facet item.
+   */
+  function executeSearch(targets) {
+    search.delete(name);
+ 
+    targets.map(function (subitem, k) {
+      search.append(name, subitem.value);
+    });
+    Iif(search.get('q') === '0') search.set('q', '');
+    search.set('is_facet_search', 'true');
+    if(window.invenioSearchFunctions) {
+      window.invenioSearchFunctions.reSearchInvenio(search);
+    }else{
+      window.location.href = "/search?" + search;
+    }
+    
+  }
+ 
+  let search = new URLSearchParams(window.location.search);
+  let modalId = "id_" + name + "_checkbox_modal";
+ 
+  let dp = displayNumber == null ? 5 : displayNumber;
+  return (
+    <div id={facet_item_id}>
+      <div className="chbox-container">
+        <CheckBoxList values={values} name={name} isModal={false} displayNumber={dp} onChange={handleListChange}/>
+        {values.length > dp &&
+          <a onClick={openModal} modalId={modalId} >. . . See More</a>
+        }
+        <ModalCheckboxList values={values} name={name} modalId={modalId} displayNumber={displayNumber}/>
+      </div>
+    </div>
+  );
+}
+ 
+export default RangeCheckboxList;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/components/RangeFacet.jsx.html b/app-facet-search/coverage/lcov-report/src/components/RangeFacet.jsx.html new file mode 100644 index 0000000..c58a545 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/components/RangeFacet.jsx.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/components/RangeFacet.jsx + + + + + + + + + +
+
+

All files / src/components RangeFacet.jsx

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 15/15 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49  +  +  +  +  +  +  +  +  +28x +28x +28x +28x +28x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import "rc-slider/assets/index.css";
+import "rc-tooltip/assets/bootstrap.css";
+import React, { useState } from "react";
+import { Collapse } from "reactstrap";
+import RangeSelect from "./RangeSelect";
+import RangeSlider from "./RangeSlider";
+import RangeCheckboxList from "./RangeCheckboxList";
+ 
+function RangeFacet({ item, nameshow, name, key, labels, isInitOpen, uiType, displayNumber}) {
+  const toggle = () => setIsOpen(!isOpen);
+  const search = window.location.search.replace(",", "%2C");
+  const is_check = search.indexOf(encodeURIComponent(name)) >= 0 ? true : isInitOpen;
+  const [isOpen, setIsOpen] = useState(is_check);
+  return (
+    <div className="panel panel-default" key={key}>
+      <div className="panel-heading clearfix">
+        <h3 className="panel-title pull-left">{nameshow}</h3>
+          <a className="pull-right" onClick={toggle}>
+          {!isOpen && (
+            <span>
+              <i className="glyphicon glyphicon-chevron-right"></i>
+            </span>
+          )}
+          {isOpen && (
+            <span>
+              <i className="glyphicon glyphicon-chevron-down"></i>
+            </span>
+          )}
+        </a>
+      </div>
+      <Collapse isOpen={isOpen}>
+        <div className="panel-body index-body">
+          {item != null && uiType === "SelectBox" && (
+            <RangeSelect values={item.buckets} name={name} labels={labels} />
+          )}
+          {item != null && uiType === "CheckboxList" &&  (
+            <RangeCheckboxList values={item.buckets} name={name} labels={labels} displayNumber={displayNumber} />
+          )}
+          {item != null && uiType === "RangeSlider" && (
+            <RangeSlider value={item.buckets} name={name} labels={labels} />
+          )}
+        </div>
+      </Collapse>
+    </div>
+  );
+}
+ 
+export default RangeFacet;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/components/RangeSelect.jsx.html b/app-facet-search/coverage/lcov-report/src/components/RangeSelect.jsx.html new file mode 100644 index 0000000..62c49f7 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/components/RangeSelect.jsx.html @@ -0,0 +1,283 @@ + + + + + + Code coverage report for src/components/RangeSelect.jsx + + + + + + + + + +
+
+

All files / src/components RangeSelect.jsx

+
+ +
+ 100% + Statements + 21/21 +
+ + +
+ 100% + Branches + 12/12 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 20/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67  +  +  +  +  +  +  +  +3x +  +  +2x +  +2x +3x +  +  +2x +2x +2x +1x +  +1x +  +  +  +3x +  +3x +3x +3x +2x +4x +  +  +  +4x +4x +1x +  +  +  +  +3x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import "rc-slider/assets/index.css";
+import "rc-tooltip/assets/bootstrap.css";
+import React from "react";
+import Select from "react-select";
+ 
+function RangeSelect({ values, name, labels }) {
+ 
+  //If there is a space in the id attribute, it cannot be searched by ID, so escape it.
+  let facet_item_id = "id_" + name + "_select";
+ 
+  function handleChange(params) {
+    search.delete(name);
+    
+    params.map(function (subitem, k) {
+      search.append(name, subitem.value);
+    });
+ 
+    if(search.get('q') === '0') search.set('q', '');
+    search.set('is_facet_search', 'true');
+    if(window.invenioSearchFunctions) {
+      window.invenioSearchFunctions.reSearchInvenio(search);
+    }else{
+      window.location.href = "/search?" + search;
+    }
+  }
+ 
+  let search = new URLSearchParams(window.location.search);
+ 
+  let defaultOptions = [];
+  let options = [];
+  if (values) {
+    values.map(function (subitem, k) {
+      let option = {
+        label: (labels[subitem.key] || subitem.key) + "(" + subitem.doc_count + ")",
+        value: subitem.key
+      };
+      options.push(option);
+      if (search.get(name) &&  search.getAll(name).includes(subitem.key)) {
+        defaultOptions.push(option);
+      }
+    });
+  }
+ 
+  return (
+    <div id={facet_item_id}>
+      <div className="select-container">
+        <Select
+          defaultValue={defaultOptions}
+          isMulti
+          name="Facet_Search"
+          ontrolShouldRenderValue={false} 
+          onChange={(_selectedOption) => {
+            handleChange(_selectedOption);
+          }}
+          backspaceRemovesValue={false}
+          isClearable={false}
+          options={options}
+          className="basic-multi-select"
+          classNamePrefix="select"
+        />
+      </div>
+    </div>
+  );
+}
+ 
+export default RangeSelect;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/components/RangeSlider.jsx.html b/app-facet-search/coverage/lcov-report/src/components/RangeSlider.jsx.html new file mode 100644 index 0000000..d7e5ae8 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/components/RangeSlider.jsx.html @@ -0,0 +1,559 @@ + + + + + + Code coverage report for src/components/RangeSlider.jsx + + + + + + + + + +
+
+

All files / src/components RangeSlider.jsx

+
+ +
+ 93.67% + Statements + 74/79 +
+ + +
+ 72.91% + Branches + 35/48 +
+ + +
+ 87.5% + Functions + 7/8 +
+ + +
+ 93.58% + Lines + 73/78 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159  +  +  +  +  +  +  +10x +  +  +6x +6x +  +  +6x +6x +6x +  +  +6x +1x +1x +  +1x +1x +  +1x +1x +  +  +5x +5x +5x +  +5x +  +1x +1x +  +1x +1x +  +1x +1x +  +  +  +4x +1x +1x +1x +1x +  +  +3x +3x +3x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +3x +  +3x +  +3x +3x +3x +2x +  +1x +  +  +  +10x +  +10x +10x +10x +9x +9x +9x +1x +1x +  +4x +4x +4x +1x +  +4x +4x +  +  +  +  +10x +  +10x +10x +10x +10x +10x +10x +  +10x +  +2x +2x +2x +2x +2x +2x +  +10x +  +10x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Slider from 'rc-slider';
+import 'rc-slider/assets/index.css';
+import 'rc-tooltip/assets/bootstrap.css';
+import React, { useState } from "react";
+ 
+function RangeSlider({ value, name, labels}) {
+  //If there is a space in the id attribute, it cannot be searched by ID, so escape it.
+  let facet_item_id = "id_" + name + "_slider";
+ 
+  function validateInputIsOk() {
+    let headComp = document.getElementById(facet_item_id + "_input_head");
+    let tailComp = document.getElementById(facet_item_id + "_input_tail");
+ 
+    // Clear error information
+    setHeadStyle('form-control');
+    setTailStyle('form-control');
+    setErrMsg('');
+ 
+    // Required Check
+    if(!headComp.value || !tailComp.value){
+      Eif(!headComp.value) {
+        setHeadStyle('form-control range-slider-error');
+      }
+      Eif(!tailComp.value) {
+        setTailStyle('form-control range-slider-error');
+      }
+      setErrMsg(labels['facetSliderRequiredValidation']);
+      return false;
+    }
+    // Numerical input check
+    let pattern = new RegExp(/^([1-9]\d*|0)$/);
+    let headResult = pattern.exec(inputHead);
+    let tailResult = pattern.exec(inputTail);
+ 
+    if(headResult == null || headResult[0] != inputHead ||
+        tailResult == null || tailResult[0] != inputTail) {
+      Eif(headResult == null || headResult[0] != inputHead) {
+        setHeadStyle('form-control range-slider-error');
+      }
+      Eif(tailResult == null || tailResult[0] != inputTail) {
+        setTailStyle('form-control range-slider-error');
+      }
+      setErrMsg(labels['facetSliderValueValidation']);
+      return false;
+    }
+ 
+    // Correlation Check
+    if(parseFloat(inputHead) > parseFloat(inputTail)) {
+      setHeadStyle('form-control range-slider-error');
+      setTailStyle('form-control range-slider-error');
+      setErrMsg(labels['facetSliderCorrelationValidation']);
+      return false;
+    }
+    // Clear error information
+    setHeadStyle('form-control');
+    setTailStyle('form-control');
+    setErrMsg('');
+    return true;
+  }
+ 
+  function handleSlide(valuelog) {
+    setSliderValues([valuelog[0],valuelog[1]]);
+    if(inputHead != valuelog[0]) {
+      setInputHead(Math.round(valuelog[0]));
+    }
+    if(inputTail != valuelog[1]) {
+      setInputTail(Math.round(valuelog[1]));
+    }
+  }
+ 
+  function handleGo() {
+    if(!validateInputIsOk()) {
+      return;
+    }
+    search.set(name, inputHead + '--' + inputTail);
+ 
+    if(search.get('q') === '0') search.set('q', '');
+    search.set('is_facet_search', 'true');
+    if(window.invenioSearchFunctions) {
+      window.invenioSearchFunctions.reSearchInvenio(search);
+    }else{
+      window.location.href = "/search?" + search;
+    }
+  }
+ 
+  let search = new URLSearchParams(window.location.search);
+ 
+  let minValue = null;
+  let maxValue = null;
+  if(search.get(name) != null) {
+    const paramValues = search.get(name).split('--');
+    minValue = parseInt(paramValues[0]);
+    maxValue = parseInt(paramValues[1]);
+  } else Eif(value) {
+    value.map(function (subitem, k) {
+      let parse_Int;
+      Eif (subitem.key.length > 0) {
+        parse_Int = parseInt(subitem.key);
+        if(minValue == null || minValue > parse_Int) {
+          minValue = parse_Int;
+        }
+        Eif(maxValue == null || maxValue < parse_Int) {
+          maxValue = parse_Int;
+        }
+      }
+    });
+  }
+  let step = (maxValue - minValue)/100;
+ 
+  const [sliderValues, setSliderValues] = useState([minValue,maxValue]);
+  const [inputHead, setInputHead] = useState(minValue);
+  const [inputTail, setInputTail] = useState(maxValue);
+  const [headStyle, setHeadStyle] = useState('form-control');
+  const [tailStyle, setTailStyle] = useState('form-control');
+  const [errMsg, setErrMsg] = useState('');
+ 
+  const clearSliderValue = () => {
+    // Information reconfiguration when recalled
+    setSliderValues([minValue, maxValue]);
+    setInputHead(minValue);
+    setInputTail(maxValue);
+    setHeadStyle('form-control');
+    setTailStyle('form-control');
+    setErrMsg('');
+  }
+  window.facetSearchFunctions[name + '_clearSliderValue'] = clearSliderValue;
+ 
+  return (
+    <div id={facet_item_id}>
+      <div className="col-sm-11" style={{ paddingBottom: "20px", "white-space": "nowrap" }}>
+        <Slider range min={minValue} max={maxValue} step={step} onChange={handleSlide} defaultValue={sliderValues} value={sliderValues} />
+      </div>
+      <div className="form-group row">
+        <div className="col-sm-5">
+          <input type="number" id={facet_item_id + "_input_head"} className={headStyle}
+            value={inputHead}
+            onChange={e => setInputHead(e.target.value.slice(0, 4))}
+          />
+        </div>
+        <div className="col-sm-5">
+          <input type="number" id={facet_item_id + "_input_tail"} className={tailStyle}
+            value={inputTail}
+            onChange={e => setInputTail(e.target.value.slice(0, 4))}
+          />
+        </div>
+        <div className="col-sm-2">
+          <button type="button" style={{ marginLeft: "3px" }}
+            className="btn btn-primary pull-right"
+            onClick={handleGo}> {labels['Goto']}
+          </button>
+        </div>
+      </div>
+      <div className="range-slider-error-msg" id={facet_item_id + "_msg"}>{errMsg}</div>
+    </div>
+  )
+}
+ 
+export default RangeSlider;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/components/index.html b/app-facet-search/coverage/lcov-report/src/components/index.html new file mode 100644 index 0000000..1e0d9f7 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/components/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for src/components + + + + + + + + + +
+
+

All files src/components

+
+ +
+ 93.71% + Statements + 149/159 +
+ + +
+ 81.65% + Branches + 89/109 +
+ + +
+ 96.55% + Functions + 28/29 +
+ + +
+ 94.19% + Lines + 146/155 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
RangeCheckboxList.jsx +
+
90.56%48/5379.41%27/34100%14/1492.3%48/52
RangeFacet.jsx +
+
100%6/6100%15/15100%2/2100%5/5
RangeSelect.jsx +
+
100%21/21100%12/12100%5/5100%20/20
RangeSlider.jsx +
+
93.67%74/7972.91%35/4887.5%7/893.58%73/78
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/index.html b/app-facet-search/coverage/lcov-report/src/index.html new file mode 100644 index 0000000..e581916 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 110/110 +
+ + +
+ 100% + Branches + 56/56 +
+ + +
+ 100% + Functions + 18/18 +
+ + +
+ 100% + Lines + 107/107 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
App.js +
+
100%110/110100%56/56100%18/18100%107/107
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/test/index.html b/app-facet-search/coverage/lcov-report/src/test/index.html new file mode 100644 index 0000000..94293e0 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/test/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/test + + + + + + + + + +
+
+

All files src/test

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
setup_en.js +
+
100%4/4100%0/0100%0/0100%4/4
setup_jp.js +
+
100%4/4100%0/0100%0/0100%4/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/test/setup_en.js.html b/app-facet-search/coverage/lcov-report/src/test/setup_en.js.html new file mode 100644 index 0000000..6a1163e --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/test/setup_en.js.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for src/test/setup_en.js + + + + + + + + + +
+
+

All files / src/test setup_en.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +41x +1x +1x +1x
var dom = '<div><select id="lang-code" name="lang_code" defaultValue="en"><option value="en" selected>English</option></select><input class="body-facet-search-label" id="Goto" type="hidden" value="検索"/></div>';
+var div = document.createElement('div');
+div.innerHTML = dom;
+document.body.appendChild(div);
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov-report/src/test/setup_jp.js.html b/app-facet-search/coverage/lcov-report/src/test/setup_jp.js.html new file mode 100644 index 0000000..812c063 --- /dev/null +++ b/app-facet-search/coverage/lcov-report/src/test/setup_jp.js.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for src/test/setup_jp.js + + + + + + + + + +
+
+

All files / src/test setup_jp.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +42x +2x +2x +2x
var dom = '<div><select id="lang-code" name="lang_code" defaultValue="ja"><option value="ja" selected>日本語</option></select><input class="body-facet-search-label" id="Goto" type="hidden" value="検索"/></div>';
+var div = document.createElement('div');
+div.innerHTML = dom;
+document.body.appendChild(div);
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app-facet-search/coverage/lcov.info b/app-facet-search/coverage/lcov.info new file mode 100644 index 0000000..d269fe1 --- /dev/null +++ b/app-facet-search/coverage/lcov.info @@ -0,0 +1,592 @@ +TN: +SF:src\App.js +FN:18,(anonymous_0) +FN:35,(anonymous_1) +FN:42,(anonymous_2) +FN:43,(anonymous_3) +FN:60,(anonymous_4) +FN:66,(anonymous_5) +FN:67,(anonymous_6) +FN:81,(anonymous_7) +FN:84,(anonymous_8) +FN:128,(anonymous_9) +FN:136,(anonymous_10) +FN:141,(anonymous_11) +FN:147,(anonymous_12) +FN:166,(anonymous_13) +FN:172,(anonymous_14) +FN:179,(anonymous_15) +FN:182,(anonymous_16) +FN:194,(anonymous_17) +FNF:18 +FNH:18 +FNDA:7,(anonymous_0) +FNDA:4,(anonymous_1) +FNDA:4,(anonymous_2) +FNDA:4,(anonymous_3) +FNDA:4,(anonymous_4) +FNDA:4,(anonymous_5) +FNDA:4,(anonymous_6) +FNDA:9,(anonymous_7) +FNDA:46,(anonymous_8) +FNDA:46,(anonymous_9) +FNDA:4,(anonymous_10) +FNDA:6,(anonymous_11) +FNDA:14,(anonymous_12) +FNDA:2,(anonymous_13) +FNDA:6,(anonymous_14) +FNDA:2,(anonymous_15) +FNDA:14,(anonymous_16) +FNDA:2,(anonymous_17) +DA:9,3 +DA:10,3 +DA:11,3 +DA:12,3 +DA:19,7 +DA:20,4 +DA:29,4 +DA:30,4 +DA:31,4 +DA:32,4 +DA:36,4 +DA:37,4 +DA:38,4 +DA:39,4 +DA:40,4 +DA:41,4 +DA:42,4 +DA:44,4 +DA:45,2 +DA:46,2 +DA:47,2 +DA:48,2 +DA:49,2 +DA:51,4 +DA:52,4 +DA:53,4 +DA:54,4 +DA:55,4 +DA:56,4 +DA:62,4 +DA:64,4 +DA:65,4 +DA:66,4 +DA:68,4 +DA:71,2 +DA:73,2 +DA:76,2 +DA:82,9 +DA:83,9 +DA:84,8 +DA:85,46 +DA:86,46 +DA:87,46 +DA:88,46 +DA:89,29 +DA:90,29 +DA:91,29 +DA:93,29 +DA:94,16 +DA:95,16 +DA:96,16 +DA:97,16 +DA:98,63 +DA:99,63 +DA:101,18 +DA:102,18 +DA:103,45 +DA:105,9 +DA:106,9 +DA:110,29 +DA:111,4 +DA:113,4 +DA:114,7 +DA:116,7 +DA:118,3 +DA:119,3 +DA:127,9 +DA:128,9 +DA:129,46 +DA:130,4 +DA:137,4 +DA:138,4 +DA:142,6 +DA:143,6 +DA:148,14 +DA:149,14 +DA:150,14 +DA:151,14 +DA:152,14 +DA:153,14 +DA:154,14 +DA:166,3 +DA:167,2 +DA:172,3 +DA:173,6 +DA:174,5 +DA:179,3 +DA:180,2 +DA:181,2 +DA:182,2 +DA:183,14 +DA:184,14 +DA:185,2 +DA:186,2 +DA:190,2 +DA:194,3 +DA:195,2 +DA:196,2 +DA:197,2 +DA:198,2 +DA:199,2 +DA:200,2 +DA:205,3 +DA:206,3 +DA:207,3 +DA:208,3 +DA:209,3 +LF:107 +LH:107 +BRDA:44,0,0,2 +BRDA:44,0,1,2 +BRDA:64,1,0,2 +BRDA:64,1,1,2 +BRDA:68,2,0,2 +BRDA:68,2,1,2 +BRDA:71,3,0,1 +BRDA:71,3,1,1 +BRDA:71,4,0,2 +BRDA:71,4,1,2 +BRDA:71,4,2,1 +BRDA:76,5,0,1 +BRDA:76,5,1,1 +BRDA:76,6,0,2 +BRDA:76,6,1,2 +BRDA:83,7,0,8 +BRDA:83,7,1,1 +BRDA:85,8,0,2 +BRDA:85,8,1,44 +BRDA:86,9,0,46 +BRDA:86,9,1,1 +BRDA:87,10,0,46 +BRDA:87,10,1,17 +BRDA:88,11,0,29 +BRDA:88,11,1,17 +BRDA:89,12,0,1 +BRDA:89,12,1,28 +BRDA:93,13,0,16 +BRDA:93,13,1,13 +BRDA:93,14,0,29 +BRDA:93,14,1,25 +BRDA:93,14,2,20 +BRDA:99,15,0,18 +BRDA:99,15,1,45 +BRDA:99,16,0,63 +BRDA:99,16,1,36 +BRDA:99,16,2,20 +BRDA:103,17,0,9 +BRDA:103,17,1,36 +BRDA:103,18,0,45 +BRDA:103,18,1,27 +BRDA:103,18,2,11 +BRDA:110,19,0,4 +BRDA:110,19,1,25 +BRDA:116,20,0,3 +BRDA:116,20,1,4 +BRDA:116,21,0,7 +BRDA:116,21,1,4 +BRDA:129,22,0,4 +BRDA:129,22,1,42 +BRDA:145,23,0,6 +BRDA:145,23,1,2 +BRDA:173,24,0,5 +BRDA:173,24,1,1 +BRDA:184,25,0,2 +BRDA:184,25,1,12 +BRF:56 +BRH:56 +end_of_record +TN: +SF:src\components\RangeCheckboxList.jsx +FN:38,RangeCheckboxList +FN:54,(anonymous_1) +FN:94,(anonymous_2) +FN:96,(anonymous_3) +FN:122,(anonymous_4) +FN:144,closeModal +FN:156,openModal +FN:163,(anonymous_7) +FN:173,handleListChange +FN:175,(anonymous_9) +FN:188,handleModalListChange +FN:190,(anonymous_11) +FN:207,executeSearch +FN:210,(anonymous_13) +FNF:14 +FNH:14 +FNDA:10,RangeCheckboxList +FNDA:36,(anonymous_1) +FNDA:20,(anonymous_2) +FNDA:40,(anonymous_3) +FNDA:10,(anonymous_4) +FNDA:2,closeModal +FNDA:2,openModal +FNDA:4,(anonymous_7) +FNDA:2,handleListChange +FNDA:4,(anonymous_9) +FNDA:2,handleModalListChange +FNDA:4,(anonymous_11) +FNDA:4,executeSearch +FNDA:3,(anonymous_13) +DA:39,10 +DA:42,10 +DA:43,10 +DA:54,10 +DA:55,36 +DA:57,16 +DA:58,16 +DA:70,20 +DA:94,10 +DA:95,20 +DA:97,40 +DA:98,36 +DA:99,36 +DA:100,36 +DA:101,36 +DA:122,10 +DA:123,10 +DA:145,2 +DA:146,0 +DA:148,2 +DA:158,2 +DA:159,0 +DA:160,0 +DA:162,2 +DA:163,2 +DA:165,4 +DA:174,2 +DA:175,2 +DA:176,4 +DA:177,2 +DA:180,2 +DA:181,2 +DA:189,2 +DA:190,2 +DA:191,4 +DA:192,1 +DA:193,3 +DA:194,0 +DA:197,2 +DA:198,2 +DA:208,4 +DA:210,4 +DA:211,3 +DA:213,4 +DA:214,4 +DA:215,4 +DA:216,3 +DA:218,1 +DA:223,10 +DA:224,10 +DA:226,10 +DA:227,10 +LF:52 +LH:48 +BRDA:55,0,0,16 +BRDA:55,0,1,20 +BRDA:97,1,0,36 +BRDA:97,1,1,4 +BRDA:97,2,0,40 +BRDA:97,2,1,20 +BRDA:98,3,0,20 +BRDA:98,3,1,16 +BRDA:100,4,0,36 +BRDA:100,4,1,10 +BRDA:145,5,0,0 +BRDA:145,5,1,2 +BRDA:158,6,0,0 +BRDA:158,6,1,2 +BRDA:165,7,0,4 +BRDA:165,7,1,0 +BRDA:176,8,0,2 +BRDA:176,8,1,2 +BRDA:176,9,0,4 +BRDA:176,9,1,0 +BRDA:176,9,2,4 +BRDA:176,9,3,4 +BRDA:191,10,0,1 +BRDA:191,10,1,3 +BRDA:193,11,0,0 +BRDA:193,11,1,3 +BRDA:213,12,0,0 +BRDA:213,12,1,4 +BRDA:215,13,0,3 +BRDA:215,13,1,1 +BRDA:226,14,0,0 +BRDA:226,14,1,10 +BRDA:231,15,0,10 +BRDA:231,15,1,4 +BRF:34 +BRH:27 +end_of_record +TN: +SF:src\components\RangeFacet.jsx +FN:9,RangeFacet +FN:10,(anonymous_1) +FNF:2 +FNH:2 +FNDA:28,RangeFacet +FNDA:1,(anonymous_1) +DA:10,28 +DA:11,28 +DA:12,28 +DA:13,28 +DA:14,28 +LF:5 +LH:5 +BRDA:12,0,0,3 +BRDA:12,0,1,25 +BRDA:19,1,0,28 +BRDA:19,1,1,15 +BRDA:24,2,0,28 +BRDA:24,2,1,13 +BRDA:33,3,0,28 +BRDA:33,3,1,14 +BRDA:33,3,2,3 +BRDA:36,4,0,28 +BRDA:36,4,1,14 +BRDA:36,4,2,8 +BRDA:39,5,0,28 +BRDA:39,5,1,14 +BRDA:39,5,2,3 +BRF:15 +BRH:15 +end_of_record +TN: +SF:src\components\RangeSelect.jsx +FN:6,RangeSelect +FN:11,handleChange +FN:14,(anonymous_2) +FN:32,(anonymous_3) +FN:52,(anonymous_4) +FNF:5 +FNH:5 +FNDA:3,RangeSelect +FNDA:2,handleChange +FNDA:3,(anonymous_2) +FNDA:4,(anonymous_3) +FNDA:2,(anonymous_4) +DA:9,3 +DA:12,2 +DA:14,2 +DA:15,3 +DA:18,2 +DA:19,2 +DA:20,2 +DA:21,1 +DA:23,1 +DA:27,3 +DA:29,3 +DA:30,3 +DA:31,3 +DA:32,2 +DA:33,4 +DA:37,4 +DA:38,4 +DA:39,1 +DA:44,3 +DA:53,2 +LF:20 +LH:20 +BRDA:18,0,0,1 +BRDA:18,0,1,1 +BRDA:20,1,0,1 +BRDA:20,1,1,1 +BRDA:31,2,0,2 +BRDA:31,2,1,1 +BRDA:34,3,0,4 +BRDA:34,3,1,4 +BRDA:38,4,0,1 +BRDA:38,4,1,3 +BRDA:38,5,0,4 +BRDA:38,5,1,2 +BRF:12 +BRH:12 +end_of_record +TN: +SF:src\components\RangeSlider.jsx +FN:6,RangeSlider +FN:10,validateInputIsOk +FN:61,handleSlide +FN:71,handleGo +FN:95,(anonymous_4) +FN:117,(anonymous_5) +FN:137,(anonymous_6) +FN:143,(anonymous_7) +FNF:8 +FNH:7 +FNDA:10,RangeSlider +FNDA:6,validateInputIsOk +FNDA:0,handleSlide +FNDA:6,handleGo +FNDA:4,(anonymous_4) +FNDA:2,(anonymous_5) +FNDA:2,(anonymous_6) +FNDA:2,(anonymous_7) +DA:8,10 +DA:11,6 +DA:12,6 +DA:15,6 +DA:16,6 +DA:17,6 +DA:20,6 +DA:21,1 +DA:22,1 +DA:24,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:31,5 +DA:32,5 +DA:33,5 +DA:35,5 +DA:37,1 +DA:38,1 +DA:40,1 +DA:41,1 +DA:43,1 +DA:44,1 +DA:48,4 +DA:49,1 +DA:50,1 +DA:51,1 +DA:52,1 +DA:55,3 +DA:56,3 +DA:57,3 +DA:58,3 +DA:62,0 +DA:63,0 +DA:64,0 +DA:66,0 +DA:67,0 +DA:72,6 +DA:73,3 +DA:75,3 +DA:77,3 +DA:78,3 +DA:79,3 +DA:80,2 +DA:82,1 +DA:86,10 +DA:88,10 +DA:89,10 +DA:90,10 +DA:91,9 +DA:92,9 +DA:93,9 +DA:94,1 +DA:95,1 +DA:97,4 +DA:98,4 +DA:99,4 +DA:100,1 +DA:102,4 +DA:103,4 +DA:108,10 +DA:110,10 +DA:111,10 +DA:112,10 +DA:113,10 +DA:114,10 +DA:115,10 +DA:117,10 +DA:119,2 +DA:120,2 +DA:121,2 +DA:122,2 +DA:123,2 +DA:124,2 +DA:126,10 +DA:128,10 +DA:137,2 +DA:143,2 +LF:78 +LH:73 +BRDA:20,0,0,1 +BRDA:20,0,1,5 +BRDA:20,1,0,6 +BRDA:20,1,1,5 +BRDA:21,2,0,1 +BRDA:21,2,1,0 +BRDA:24,3,0,1 +BRDA:24,3,1,0 +BRDA:35,4,0,1 +BRDA:35,4,1,4 +BRDA:35,5,0,5 +BRDA:35,5,1,4 +BRDA:35,5,2,4 +BRDA:35,5,3,4 +BRDA:37,6,0,1 +BRDA:37,6,1,0 +BRDA:37,7,0,1 +BRDA:37,7,1,0 +BRDA:40,8,0,1 +BRDA:40,8,1,0 +BRDA:40,9,0,1 +BRDA:40,9,1,0 +BRDA:48,10,0,1 +BRDA:48,10,1,3 +BRDA:63,11,0,0 +BRDA:63,11,1,0 +BRDA:66,12,0,0 +BRDA:66,12,1,0 +BRDA:72,13,0,3 +BRDA:72,13,1,3 +BRDA:77,14,0,1 +BRDA:77,14,1,2 +BRDA:79,15,0,2 +BRDA:79,15,1,1 +BRDA:90,16,0,9 +BRDA:90,16,1,1 +BRDA:94,17,0,1 +BRDA:94,17,1,0 +BRDA:97,18,0,4 +BRDA:97,18,1,0 +BRDA:99,19,0,1 +BRDA:99,19,1,3 +BRDA:99,20,0,4 +BRDA:99,20,1,3 +BRDA:102,21,0,4 +BRDA:102,21,1,0 +BRDA:102,22,0,4 +BRDA:102,22,1,3 +BRF:48 +BRH:35 +end_of_record +TN: +SF:src\test\setup_en.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src\test\setup_jp.js +FNF:0 +FNH:0 +DA:1,2 +DA:2,2 +DA:3,2 +DA:4,2 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record diff --git a/app-facet-search/package.json b/app-facet-search/package.json index 0f3697e..a8c7720 100644 --- a/app-facet-search/package.json +++ b/app-facet-search/package.json @@ -3,18 +3,19 @@ "version": "0.1.0", "private": true, "dependencies": { - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.1.0", - "@testing-library/user-event": "^12.1.10", - "rc-slider": "^9.7.2", - "react": "^17.0.2", - "react-collapse": "^5.1.0", - "react-dom": "^17.0.2", - "react-scripts": "^4.0.3", - "react-select": "^4.3.1", - "reactstrap": "^8.9.0", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.4.3", + "rc-slider": "^10.1.0", + "rc-tooltip": "^5.2.2", + "react": "^18.2.0", + "react-collapse": "^5.1.1", + "react-dom": "^18.2.0", + "react-scripts": "^5.0.1", + "react-select": "^5.7.0", + "reactstrap": "^9.1.5", "unfetch": "^4.2.0", - "web-vitals": "^1.0.1" + "web-vitals": "^3.1.0" }, "scripts": { "start": "react-scripts start", @@ -39,5 +40,17 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@babel/core": "^7.21.3", + "@babel/plugin-syntax-jsx": "^7.21.4", + "@babel/preset-env": "^7.20.2", + "@babel/preset-react": "^7.18.6", + "babel-jest": "^29.5.0", + "babel-plugin-transform-export-extensions": "^6.22.0", + "jest": "^29.0.0", + "msw": "^1.2.1", + "nock": "^13.3.1", + "ts-jest": "^29.1.0" } } diff --git a/app-facet-search/src/App.js b/app-facet-search/src/App.js index e0c28f7..2442c33 100644 --- a/app-facet-search/src/App.js +++ b/app-facet-search/src/App.js @@ -1,5 +1,6 @@ import 'rc-slider/assets/index.css'; import 'rc-tooltip/assets/bootstrap.css'; +import './index.css'; import React from "react"; import fetch from "unfetch"; import RangeFacet from "./components/RangeFacet"; @@ -11,43 +12,62 @@ for (let i = 0; i < labels.length; i++) { LABELS[labels[i].id] = labels[i].value; } +let facetSearchComponent; + class FacetSearch extends React.Component { constructor(props) { super(props); this.state = { - is_enable: true, + is_enable: false, list_title: {}, list_facet: {}, - list_order: {} + list_order: {}, + list_uiType: {}, + list_isOpen: {}, + list_displayNumber: {} }; this.getTitleAndOrder = this.getTitleAndOrder.bind(this); this.get_facet_search_list = this.get_facet_search_list.bind(this); this.convertData = this.convertData.bind(this); + facetSearchComponent = this; } getTitleAndOrder() { let titleLst = {}; let orderLst = {}; + let uiTypeLst = {}; + let isOpenLst = {}; + let displayNumberLst = {}; fetch("/facet-search/get-title-and-order", {method: "POST"}) .then((r) => r.json()) .then((response) => { if (response.status) { titleLst = response.data.titles; - orderLst =response.data.order; + orderLst = response.data.order; + uiTypeLst = response.data.uiTypes; + isOpenLst = response.data.isOpens; + displayNumberLst = response.data.displayNumbers; } this.setState({ list_title: titleLst }); this.setState({ list_order: orderLst }); + this.setState({ list_uiType: uiTypeLst }); + this.setState({ list_isOpen: isOpenLst }); + this.setState({ list_displayNumber: displayNumberLst }); + this.setState({ is_enable: true }); }); } get_facet_search_list() { + let search = new URLSearchParams(window.location.search); + let url = search.get('search_type') == 2 ? "/api/index/" : "/api/records/"; fetch(url + '?' + search.toString()) .then((r) => r.json()) .then((res) => { if (search.get('search_type') == 2) { // Index faceted search + let aggregations = res && res.aggregations && res.aggregations.aggregations ? res.aggregations.aggregations[0] : {}; this.convertData(aggregations); @@ -72,14 +92,17 @@ class FacetSearch extends React.Component { let e = document.getElementById('lang-code'); let l = e.options[e.selectedIndex].value; let tmp = list_facet[name]; - for (let i = 0; i < tmp.buckets.length; i++) { let a = tmp.buckets[i]; - - if ((l == "en") && ((a.key).charCodeAt(0) > 256 || (a.key).charCodeAt(a.key.length - 1) > 256)) { - delete list_facet[name].buckets[i]; + + if ((l == "en") && ((a.key).charCodeAt(0) > 256 || (a.key).charCodeAt(a.key.length - 1) > 256)) { + //delete list_facet[name].buckets[i]; + list_facet[name].buckets.splice(i,1); + i--; } else if ((l != "en") && ((a.key).charCodeAt(0) < 256 && (a.key).charCodeAt(a.key.length - 1) < 256)) { - delete list_facet[name].buckets[i]; + //delete list_facet[name].buckets[i]; + list_facet[name].buckets.splice(i,1); + i--; } } } @@ -90,7 +113,9 @@ class FacetSearch extends React.Component { let a = tmp.buckets[i]; if (((a.key).charCodeAt(0) > 256 || (a.key).charCodeAt(a.key.length - 1) > 256)) { - delete list_facet[name].buckets[i]; + //delete list_facet[name].buckets[i]; + list_facet[name].buckets.splice(i,1); + i--; } } } @@ -99,6 +124,12 @@ class FacetSearch extends React.Component { }); } this.setState({list_facet: list_facet}); + Object.keys(data).map(function (name, k) { + if(window.facetSearchFunctions[name + '_clearSliderValue']) { + window.facetSearchFunctions[name + '_clearSliderValue'](); + } + }); + } componentDidMount() { @@ -107,7 +138,7 @@ class FacetSearch extends React.Component { } render() { - const { is_enable, list_title, list_facet, list_order } = this.state; + const { is_enable, list_title, list_facet, list_order, list_uiType, list_isOpen, list_displayNumber} = this.state; return (
{is_enable && ( @@ -116,8 +147,11 @@ class FacetSearch extends React.Component { const name = list_order[order]; const item = list_facet[name]; const nameshow = list_title[name]; + const isOpen = list_isOpen[name]; + const uiType = list_uiType[name]; + const displayNumber = list_displayNumber[name]; return ( - + ); })}
@@ -127,4 +161,50 @@ class FacetSearch extends React.Component { } } +// Allows external parties to retrieve whether or not a Facet search item is loaded on the screen. +const useFacetSearch = () => { + return facetSearchComponent != null; +} + +// Change Facet's search criteria. +// The argument Data assumes Json information about Facet searches aggregated by Elasticsearch. +const resetFacetData = (data) => { + if(facetSearchComponent != null) { + facetSearchComponent.convertData(data); + } +} + +// Used to retrieve Facet's narrowing status from external sources. +const getFacetSearchCondition = () => { + let search = new URLSearchParams(window.location.search); + let result = new URLSearchParams(); + Object.keys(facetSearchComponent.state.list_order).map(function (order, k) { + let name = facetSearchComponent.state.list_order[order]; + if(search.has(name)) { + for(var value of search.getAll(name)) { + result.append(name, value); + } + } + }); + return result; +} + +// Used to change State during testing. Do not use otherwise. +const setStateForTest = (json_data) => { + facetSearchComponent.setState({ list_title: json_data.data.titles }); + facetSearchComponent.setState({ list_order: json_data.data.order }); + facetSearchComponent.setState({ list_uiType: json_data.data.uiTypes }); + facetSearchComponent.setState({ list_isOpen: json_data.data.isOpens }); + facetSearchComponent.setState({ list_displayNumber: json_data.data.displayNumbers }); + facetSearchComponent.setState({ is_enable: true }); +} + + +// Put the defined function in the key for the global variable of the window object. +window.facetSearchFunctions = {}; +window.facetSearchFunctions.setStateForTest = setStateForTest; +window.facetSearchFunctions.useFacetSearch = useFacetSearch; +window.facetSearchFunctions.resetFacetData = resetFacetData; +window.facetSearchFunctions.getFacetSearchCondition = getFacetSearchCondition; + export default FacetSearch; diff --git a/app-facet-search/src/components/RangeCheckboxList.jsx b/app-facet-search/src/components/RangeCheckboxList.jsx new file mode 100644 index 0000000..ae276e7 --- /dev/null +++ b/app-facet-search/src/components/RangeCheckboxList.jsx @@ -0,0 +1,240 @@ +import "rc-slider/assets/index.css"; +import "rc-tooltip/assets/bootstrap.css"; +import React, { useState } from "react"; +//import reSearchFacet from '../App.js'; + +/** + * A UI component that displays faceted items as a list of checkboxes. + * This part consists of a list portion and a modal portion. + * + * + * The List portion displays a list of checkboxes with the number of displayNumber + * set in the admin panel. If the number of faceted items is greater than the + * number of displayNumber, a link to display the Modal is displayed. + * + * The checkboxes displayed in the List section are narrowed down by facet item + * at the same time as Click is performed. + * + * + * + * In the modal section, all faceted items are displayed in a modal. + * Since scrolling is used, there is no limit to the number of items. + * The number of display columns is also changed according to the screen size to be displayed. + * + * In the modal portion, no narrowing is performed until the search button is pressed. + * Multiple items can be selected and narrowed down in a batch. + * + * The modal portion can be closed by pressing the Cancel button or clicking + * on the portion outside the modal. The facet items that were selected before + * the refinement are cleared when the modal is closed. + * + * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count). + * @param {string} name English name of facet item. + * @param {array} labels Array of labels used in translation. + * @param {integer} displayNumber Number of items displayed in the list. + * + * @author knowledge labo yamada + */ +function RangeCheckboxList({ values, name, labels, displayNumber }) { + const [listCheckedItems, setListCheckedItems] = useState({}); + + //If there is a space in the id attribute, it cannot be searched by ID, so escape it. + let facet_item_id = "id_" + name + "_chkbox"; + let facet_item_id_for_search = CSS.escape(facet_item_id); + + /** + * Returns the DOM representing the checkbox. + * + * @param {string} id ID of the checkbox. + * @param {string} value Value of the checkbox. + * @param {boolean} checked The selected state of the checkbox. + * @param {function} onChange Process when the check box is clicked, which is set only when List is displayed. + * @returns DOM representing a checkbox. + */ + const CheckBox = ({ id, value, checked, onChange}) => { + if(onChange !=null) { + //for lists + listCheckedItems[id] = checked; + return ( + + ) + } else { + //for Modal + return ( + + ) + } + + } + + /** + * Returns the DOM of a list of checkboxes. + * This function is used for both List and Modal. The parameter isModal controls which use is made of this function. + * + * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count). + * @param {string} name English name of facet item. + * @param {bool} isModal True for modal use. false for list use. + * @param {integer} displayNumber Number of items displayed in the list. + * @param {function} onChange Process when the check box is clicked, which is set only when List is displayed. + * @returns DOM representing a checkbox list. + */ + const CheckBoxList = ({ values, name, isModal, displayNumber, onChange}) => { + return ( + values.map((subitem,index) => { + if (isModal || index < displayNumber) { + let id = "id_" + name + (isModal ? "_chkbox_mdl_" : "_chkbox_") + index; + let label = subitem.key + "(" + subitem.doc_count + ")"; + let checked = search.get(name) && search.getAll(name).includes(subitem.key); + return ( +
+ +
+ ) + } + }) + ) + } + + /** + * Returns the modal DOM. + * + * @param {array} values An array consisting of faceted item names (key) and the number of items in the target (doc_count). + * @param {string} name English name of facet item. + * @param {bool} modalId ID set for the modal. + * @returns Modal DOM + */ + const ModalCheckboxList = ({ values, name, modalId }) => { + return ( +
+ +
+
+
+ +
+
+ {labels['cancel']} + +
+
+
+
+ ) + }; + + /** + * Called to close the modal. + */ + function closeModal(e){ + if(e == null){ + return; + } + document.getElementById(e.target.getAttribute('modalId')).classList.remove("is-active"); + } + + /** + * Called to open a modal. + * Reconfigure it to select only the checkboxes that have been narrowed down + * from the parameters of the URL at the time before displaying. + */ + function openModal(e){ + + if(e == null){ + console.log("event == null" ); + return; + } + document.getElementById(e.target.getAttribute('modalId')).classList.add("is-active"); + document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => { + //el.checked = params.indexOf(name + "=" + el.value)!= -1; + el.checked = search.get(name) && search.getAll(name).includes(el.value); + }); + } + + /** + * Processing when a check box is selected when the List is displayed. The search items of + * the newly selected check box are added to the parameter to narrow down the search. + */ + function handleListChange(e) { + const targets = []; + document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => { + if((el.checked && e.target.value !== el.value) || (e.target.checked && e.target.value === el.value)){ + targets.push({label: name, value: el.value}); + } + }); + setListCheckedItems({...listCheckedItems, [e.target.id]: e.target.checked}); + executeSearch(targets); + } + + /** + * When the search button is pressed during modal display, a callout difference srere. + * The search item for the newly selected check box is added to the parameters and a narrowed search is performed. + */ + function handleModalListChange(e) { + const targets = []; + document.querySelector('#' + facet_item_id_for_search).querySelectorAll('.chbox-mdl input').forEach(el => { + if(el.checked){ + targets.push({label: name, value: el.value}); + }else if(listCheckedItems[el.id]){ + setListCheckedItems({...listCheckedItems, [el.id]: el.checked}); + } + }); + executeSearch(targets); + document.getElementById(e.target.getAttribute('modalId')).classList.remove("is-active"); + } + + /** + * Narrowing is performed based on the narrowing target specified in this facet item. + * Parameters other than this facet item are used as is. + * + * @param {array} targets Parameters to be refined by this facet item. + */ + function executeSearch(targets) { + search.delete(name); + + targets.map(function (subitem, k) { + search.append(name, subitem.value); + }); + if(search.get('q') === '0') search.set('q', ''); + search.set('is_facet_search', 'true'); + if(window.invenioSearchFunctions) { + window.invenioSearchFunctions.reSearchInvenio(search); + }else{ + window.location.href = "/search?" + search; + } + + } + + let search = new URLSearchParams(window.location.search); + let modalId = "id_" + name + "_checkbox_modal"; + + let dp = displayNumber == null ? 5 : displayNumber; + return ( +
+
+ + {values.length > dp && + . . . See More + } + +
+
+ ); +} + +export default RangeCheckboxList; diff --git a/app-facet-search/src/components/RangeFacet.jsx b/app-facet-search/src/components/RangeFacet.jsx index 2112b67..0333b55 100644 --- a/app-facet-search/src/components/RangeFacet.jsx +++ b/app-facet-search/src/components/RangeFacet.jsx @@ -4,21 +4,18 @@ import React, { useState } from "react"; import { Collapse } from "reactstrap"; import RangeSelect from "./RangeSelect"; import RangeSlider from "./RangeSlider"; +import RangeCheckboxList from "./RangeCheckboxList"; -function check_temp(name) { - return name === "Time Period(s)"; -} - -function RangeFacet({ item, nameshow, name, key, labels }) { +function RangeFacet({ item, nameshow, name, key, labels, isInitOpen, uiType, displayNumber}) { const toggle = () => setIsOpen(!isOpen); const search = window.location.search.replace(",", "%2C"); - const is_check = search.indexOf(encodeURIComponent(name)) >= 0 ? true : false; + const is_check = search.indexOf(encodeURIComponent(name)) >= 0 ? true : isInitOpen; const [isOpen, setIsOpen] = useState(is_check); return (
- {!check_temp(name) && ( + {item != null && uiType === "SelectBox" && ( )} - {check_temp(name) && ( + {item != null && uiType === "CheckboxList" && ( + + )} + {item != null && uiType === "RangeSlider" && ( )}
diff --git a/app-facet-search/src/components/RangeSelect.jsx b/app-facet-search/src/components/RangeSelect.jsx index 43352ae..cb0f23c 100644 --- a/app-facet-search/src/components/RangeSelect.jsx +++ b/app-facet-search/src/components/RangeSelect.jsx @@ -4,37 +4,28 @@ import React from "react"; import Select from "react-select"; function RangeSelect({ values, name, labels }) { + + //If there is a space in the id attribute, it cannot be searched by ID, so escape it. + let facet_item_id = "id_" + name + "_select"; + function handleChange(params) { - let searchUrl = ""; - if (search.indexOf("&") >= 0) { - let arrSearch = search.split("&"); - for (let i = 0; i < arrSearch.length; i++) { - if (arrSearch[i].indexOf(encodeURIComponent(name) + "=") < 0) { - searchUrl += "&" + arrSearch[i]; - } - } - //Delete "&" in First element - searchUrl = searchUrl.substring(1); - } - if (searchUrl != "") { - search = searchUrl; - } + search.delete(name); params.map(function (subitem, k) { - const pattern = - encodeURIComponent(name) + "=" + encodeURIComponent(subitem.value); - search += "&" + pattern; + search.append(name, subitem.value); }); - search = search.replace("q=0", "q="); - search += search.indexOf('is_facet_search=') == -1 ? '&is_facet_search=true' : ''; - window.location.href = "/search" + search; - } - let search = window.location.search.replace(",", "%2C") || "?"; - let params = window.location.search.substring(1).split('&'); - for (let i = 0; i < params.length; i++) { - params[i] = decodeURIComponent(params[i]); + if(search.get('q') === '0') search.set('q', ''); + search.set('is_facet_search', 'true'); + if(window.invenioSearchFunctions) { + window.invenioSearchFunctions.reSearchInvenio(search); + }else{ + window.location.href = "/search?" + search; + } } + + let search = new URLSearchParams(window.location.search); + let defaultOptions = []; let options = []; if (values) { @@ -44,14 +35,14 @@ function RangeSelect({ values, name, labels }) { value: subitem.key }; options.push(option); - let pattern = name + "=" + subitem.key; - if (params.indexOf(pattern) != -1) { + if (search.get(name) && search.getAll(name).includes(subitem.key)) { defaultOptions.push(option); } }); } + return ( -
+
setInputHead(e.target.value)} + onChange={e => setInputHead(e.target.value.slice(0, 4))} />
- setInputTail(e.target.value)} + onChange={e => setInputTail(e.target.value.slice(0, 4))} />
@@ -110,6 +150,7 @@ function RangeSlider({ value, name, labels }) {
+
{errMsg}
) } diff --git a/app-facet-search/src/index.css b/app-facet-search/src/index.css new file mode 100644 index 0000000..a3375fe --- /dev/null +++ b/app-facet-search/src/index.css @@ -0,0 +1,104 @@ +.chbox-container { + margin-left:10px; + display:table; + width:100%; +} + +.chbox-container label{ + user-select: none; + +} + +.chbox-mdl { + z-index: 999; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 40px 10px; + text-align: center; + opacity: 0; + visibility: hidden; + transition: opacity .3s, visibility .3s; +} + +.chbox-mdl.is-active { + opacity: 1; + visibility: visible; + transition: opacity .4s, visibility .4s; +} + +.chbox-mdl::after { + display: inline-block; + height: 100%; + margin-left: -.05em; + vertical-align: middle; + content: "" +} + +.chbox-mdl .overlay { + z-index: 10; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0, 0, 0, .8) +} + +.chbox-mdl .window { + box-sizing: border-box; + display: inline-block; + z-index: 20; + position: relative; + width: 90%; + min-width: 320px; + border-radius: 2px; + background: #fff; + box-shadow: 0 0 30px rgba(0, 0, 0, .6); + vertical-align: middle +} + +.chbox-mdl .window .content { + max-height: 80vh; + overflow-y: auto; + text-align: left; + padding: 20px; + line-height: 15px +} + +.chbox-mdl .window .content .list { + display: grid; + gap: 10px; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + max-height: 50vh; + overflow-y: scroll; +} + +.chbox-mdl .window .content .footer { + width: 100%; + text-align: center; + padding-top: 20px; +} + +.chbox-mdl .window .content .footer button { + margin-left: 50px; +} + +.rc-slider-mark-text { + display: none !important; +} + +.rc-slider-dot { + border: initial !important; + background-color: initial !important; +} + +.range-slider-error { + background-color: #FFF0F5; +} + +.range-slider-error-msg { + color: red; +} \ No newline at end of file diff --git a/app-facet-search/src/test/app_data.test.js b/app-facet-search/src/test/app_data.test.js new file mode 100644 index 0000000..ea56027 --- /dev/null +++ b/app-facet-search/src/test/app_data.test.js @@ -0,0 +1,112 @@ +import React from "react"; +import { fireEvent, render, screen, act } from '@testing-library/react'; +import { rest } from "msw"; +import { setupServer } from "msw/node"; +import "./setup_jp"; +import App from "../App"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +// Create an API server +const server = setupServer( + rest.post("/facet-search/get-title-and-order", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data1) + ); + }), + rest.get("/api/index/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data2) + ); + }), + rest.get("/api/records/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data3) + ); + }), + rest.get("/", (_, res, ctx) => { + return res( + ctx.status(200) + ); + }), + ); + +beforeAll(() => server.listen()); +afterEach(() => { + server.resetHandlers(); + }); + afterAll(() => server.close()); + + /* + In this test case, in order to achieve 100% Coverage, + verification is performed on data that does not originally occur to satisfy the Coverage. + */ +test('app.js data pattern test.', async () => { + require ('css.escape'); + + + Object.defineProperty(window, 'location', { + value: { + href: 'http://localhost', + search: '?search_type=1' + }, + writable: true, + }); + window.facetSearchFunctions.resetFacetData(''); + const {container, rerender} = render(); +}); + +test('test2.', async () => { + require ('css.escape'); + Object.defineProperty(window, 'location', { + value: { + href: 'http://localhost', + search: '?search_type=2' + }, + writable: true, + }); + const {container, rerender} = render(); + window.facetSearchFunctions.resetFacetData(json_data4.aggregations); + window.facetSearchFunctions.resetFacetData(json_data5.aggregations); + window.facetSearchFunctions.resetFacetData(''); +}); + + +let json_data1 = { + "data": {}, + "status": false +} + +let json_data2 = {} + +let json_data3 = {} + +let json_data4 = { + "aggregations": + { + "Data Language": { + "Data Language": {"key": "jpn","buckets" : "dummy", "Data Language" : "jpn"} +}}} + +let json_data5 = { + "aggregations": + { + "Access": { + "buckets": [ + { + "doc_count": 328, + "key": "restricted access" + }, + { + "doc_count": 328, + "key": "制約付きアクセス" + } + ], + "Access" : "restricted access", + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }}} diff --git a/app-facet-search/src/test/app_en.test.js b/app-facet-search/src/test/app_en.test.js new file mode 100644 index 0000000..5945f58 --- /dev/null +++ b/app-facet-search/src/test/app_en.test.js @@ -0,0 +1,473 @@ +import React from "react"; +import { fireEvent, render, screen, act } from '@testing-library/react'; +import { rest } from "msw"; +import { setupServer } from "msw/node"; +import "./setup_en"; +import App from "../App"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +// Create an API server +const server = setupServer( + rest.post("/facet-search/get-title-and-order", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data1) + ); + }), + rest.get("/api/index/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data2) + ); + }), + rest.get("/api/records/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data3) + ); + }), + rest.get("/", (_, res, ctx) => { + return res( + ctx.status(200) + ); + }), + ); + +beforeAll(() => server.listen()); +afterEach(() => { + server.resetHandlers(); + }); + afterAll(() => server.close()); + +test('app.js English test.', async () => { + require ('css.escape'); + Object.defineProperty(window, 'location', { + value: { + href: 'http://localhost/', + search: '?search_type=1&Data Language=eng' + }, + writable: true, + }); + const {container, rerender} = render(); + + // Since the State cannot be changed within the Fetch process, the State is changed and redrawn. + window.facetSearchFunctions.setStateForTest(json_data1); + const clearSliderValue = () => {} + window.facetSearchFunctions['Time Period(s)_clearSliderValue'] = clearSliderValue; + rerender(); + window.facetSearchFunctions.resetFacetData(json_data2.aggregations.aggregations[0]); + window.facetSearchFunctions.useFacetSearch(); + + window.facetSearchFunctions.getFacetSearchCondition(); +}); + + + +let json_data1 = { + "data": { + "displayNumbers": { + "Access": null, + "Data Language": 3, + "Data Type": 15, + "Distributor": 5, + "Geographic Coverage": 5, + "Time Period(s)": null, + "Topic": null + }, + "isOpens": { + "Access": false, + "Data Language": false, + "Data Type": false, + "Distributor": false, + "Geographic Coverage": false, + "Time Period(s)": true, + "Topic": false + }, + "order": { + "1": "Topic", + "2": "Distributor", + "3": "Data Language", + "5": "Access", + "6": "Geographic Coverage", + "74": "Time Period(s)", + "75": "Data Type" + }, + "searchConditions": { + "Access": "OR", + "Data Language": "OR", + "Data Type": "OR", + "Distributor": "OR", + "Geographic Coverage": "OR", + "Time Period(s)": "AND", + "Topic": "AND" + }, + "titles": { + "Access": "Access", + "Data Language": "Data Language", + "Data Type": "Data Type", + "Distributor": "Distributor", + "Geographic Coverage": "Geographic Coverage", + "Time Period(s)": "Time Period(s)", + "Topic": "Topic" + }, + "uiTypes": { + "Access": "SelectBox", + "Data Language": "CheckboxList", + "Data Type": "CheckboxList", + "Distributor": "CheckboxList", + "Geographic Coverage": "CheckboxList", + "Time Period(s)": "RangeSlider", + "Topic": "SelectBox" + } + }, + "status": true +} + +let json_data2 = { + "aggregations": { + "aggregations": + [{ + "Access": { + "buckets": [ + { + "doc_count": 328, + "key": "restricted access" + }, + { + "doc_count": 328, + "key": "制約付きアクセス" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Language": { + "buckets": [ + { + "doc_count": 328, + "key": "jpn" + }, + { + "doc_count": 19, + "key": "eng" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Type": { + "buckets": [ + { + "doc_count": 328, + "key": "quantitative research" + }, + { + "doc_count": 328, + "key": "quantitative research: micro data" + }, + { + "doc_count": 328, + "key": "量的調査" + }, + { + "doc_count": 328, + "key": "量的調査: ミクロデータ" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Distributor": { + "buckets": [ + { + "doc_count": 328, + "key": "SSJ データアーカイブ" + }, + { + "doc_count": 328, + "key": "SSJDA" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Geographic Coverage": { + "buckets": [ + { + "doc_count": 217, + "key": "Japan" + }, + { + "doc_count": 217, + "key": "日本" + }, + { + "doc_count": 47, + "key": "tokyo" + }, + { + "doc_count": 47, + "key": "東京都" + }, + { + "doc_count": 36, + "key": "kanagawa" + }, + { + "doc_count": 36, + "key": "神奈川県" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Time Period(s)": { + "buckets": [ + { + "doc_count": 25, + "key": "2007" + }, + { + "doc_count": 20, + "key": "2014" + }, + { + "doc_count": 18, + "key": "2015" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Topic": { + "buckets": [ + { + "doc_count": 131, + "key": "Working conditions" + }, + { + "doc_count": 131, + "key": "労働条件" + }, + { + "doc_count": 87, + "key": "Employment" + }, + { + "doc_count": 87, + "key": "雇用" + }, + { + "doc_count": 64, + "key": "Consumption and consumer behaviour" + }, + { + "doc_count": 64, + "key": "消費と消費者行動" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "date_range": { + "available": { + "buckets": [ + { + "doc_count": 328, + "key": "*-2023-05-24", + "to": 1684886400000, + "to_as_string": "2023-05-24" + }, + { + "doc_count": 0, + "from": 1684886400000, + "from_as_string": "2023-05-24", + "key": "2023-05-24-*" + } + ] + }, + "doc_count": 328 + }, + "doc_count": 328, + "key": "1613031614318", + "no_available": { + "doc_count": 0 + } + }] + } + } + + let json_data3 = { + "aggregations": + { + "Access": { + "buckets": [ + { + "doc_count": 328, + "key": "restricted access" + }, + { + "doc_count": 328, + "key": "制約付きアクセス" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Language": { + "buckets": [ + { + "doc_count": 328, + "key": "jpn" + }, + { + "doc_count": 19, + "key": "eng" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Type": { + "buckets": [ + { + "doc_count": 328, + "key": "quantitative research" + }, + { + "doc_count": 328, + "key": "quantitative research: micro data" + }, + { + "doc_count": 328, + "key": "量的調査" + }, + { + "doc_count": 328, + "key": "量的調査: ミクロデータ" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Distributor": { + "buckets": [ + { + "doc_count": 328, + "key": "SSJ データアーカイブ" + }, + { + "doc_count": 328, + "key": "SSJDA" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Geographic Coverage": { + "buckets": [ + { + "doc_count": 217, + "key": "Japan" + }, + { + "doc_count": 217, + "key": "日本" + }, + { + "doc_count": 47, + "key": "tokyo" + }, + { + "doc_count": 47, + "key": "東京都" + }, + { + "doc_count": 36, + "key": "kanagawa" + }, + { + "doc_count": 36, + "key": "神奈川県" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Time Period(s)": { + "buckets": [ + { + "doc_count": 25, + "key": "2007" + }, + { + "doc_count": 20, + "key": "2014" + }, + { + "doc_count": 18, + "key": "2015" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Topic": { + "buckets": [ + { + "doc_count": 131, + "key": "Working conditions" + }, + { + "doc_count": 131, + "key": "労働条件" + }, + { + "doc_count": 87, + "key": "Employment" + }, + { + "doc_count": 87, + "key": "雇用" + }, + { + "doc_count": 64, + "key": "Consumption and consumer behaviour" + }, + { + "doc_count": 64, + "key": "消費と消費者行動" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "date_range": { + "available": { + "buckets": [ + { + "doc_count": 328, + "key": "*-2023-05-24", + "to": 1684886400000, + "to_as_string": "2023-05-24" + }, + { + "doc_count": 0, + "from": 1684886400000, + "from_as_string": "2023-05-24", + "key": "2023-05-24-*" + } + ] + }, + "doc_count": 328 + }, + "doc_count": 328, + "key": "1613031614318", + "no_available": { + "doc_count": 0 + } + } + + } diff --git a/app-facet-search/src/test/app_jp.test.js b/app-facet-search/src/test/app_jp.test.js new file mode 100644 index 0000000..0ef5eef --- /dev/null +++ b/app-facet-search/src/test/app_jp.test.js @@ -0,0 +1,473 @@ +import React from "react"; +import { fireEvent, render, screen, act } from '@testing-library/react'; +import { rest } from "msw"; +import { setupServer } from "msw/node"; +import "./setup_jp"; +import App from "../App"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +// Create an API server +const server = setupServer( + rest.post("/facet-search/get-title-and-order", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data1) + ); + }), + rest.get("/api/index/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data2) + ); + }), + rest.get("/api/records/", (_, res, ctx) => { + return res( + ctx.status(200), + ctx.json(json_data3) + ); + }), + rest.get("/", (_, res, ctx) => { + return res( + ctx.status(200) + ); + }), + ); + +beforeAll(() => server.listen()); +afterEach(() => { + server.resetHandlers(); + }); + afterAll(() => server.close()); + +test('app.js Japanese test.', async () => { + require ('css.escape'); + + + Object.defineProperty(window, 'location', { + value: { + href: 'http://localhost', + search: '?search_type=2&Data Language=jpn' + }, + }); + + const {container, rerender} = render(); + // Since the State cannot be changed within the Fetch process, the State is changed and redrawn. + + window.facetSearchFunctions.setStateForTest(json_data1); + const clearSliderValue = () => {} + window.facetSearchFunctions['Time Period(s)_clearSliderValue'] = clearSliderValue; + rerender(); + window.facetSearchFunctions.resetFacetData(json_data2.aggregations.aggregations[0]); + window.facetSearchFunctions.useFacetSearch(); + + window.facetSearchFunctions.getFacetSearchCondition(); +}); + +let json_data1 = { + "data": { + "displayNumbers": { + "Access": null, + "Data Language": 3, + "Data Type": 15, + "Distributor": 5, + "Geographic Coverage": 5, + "Time Period(s)": null, + "Topic": null + }, + "isOpens": { + "Access": false, + "Data Language": false, + "Data Type": false, + "Distributor": false, + "Geographic Coverage": false, + "Time Period(s)": true, + "Topic": false + }, + "order": { + "1": "Topic", + "2": "Distributor", + "3": "Data Language", + "5": "Access", + "6": "Geographic Coverage", + "74": "Time Period(s)", + "75": "Data Type" + }, + "searchConditions": { + "Access": "OR", + "Data Language": "OR", + "Data Type": "OR", + "Distributor": "OR", + "Geographic Coverage": "OR", + "Time Period(s)": "AND", + "Topic": "AND" + }, + "titles": { + "Access": "Access", + "Data Language": "Data Language", + "Data Type": "Data Type", + "Distributor": "Distributor", + "Geographic Coverage": "Geographic Coverage", + "Time Period(s)": "Time Period(s)", + "Topic": "Topic" + }, + "uiTypes": { + "Access": "SelectBox", + "Data Language": "CheckboxList", + "Data Type": "CheckboxList", + "Distributor": "CheckboxList", + "Geographic Coverage": "CheckboxList", + "Time Period(s)": "RangeSlider", + "Topic": "SelectBox" + } + }, + "status": true +} + +let json_data2 = { + "aggregations": { + "aggregations": + [{ + "Access": { + "buckets": [ + { + "doc_count": 328, + "key": "restricted access" + }, + { + "doc_count": 328, + "key": "制約付きアクセス" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Language": { + "buckets": [ + { + "doc_count": 328, + "key": "jpn" + }, + { + "doc_count": 19, + "key": "eng" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Type": { + "buckets": [ + { + "doc_count": 328, + "key": "quantitative research" + }, + { + "doc_count": 328, + "key": "quantitative research: micro data" + }, + { + "doc_count": 328, + "key": "量的調査" + }, + { + "doc_count": 328, + "key": "量的調査: ミクロデータ" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Distributor": { + "buckets": [ + { + "doc_count": 328, + "key": "SSJ データアーカイブ" + }, + { + "doc_count": 328, + "key": "SSJDA" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Geographic Coverage": { + "buckets": [ + { + "doc_count": 217, + "key": "Japan" + }, + { + "doc_count": 217, + "key": "日本" + }, + { + "doc_count": 47, + "key": "tokyo" + }, + { + "doc_count": 47, + "key": "東京都" + }, + { + "doc_count": 36, + "key": "kanagawa" + }, + { + "doc_count": 36, + "key": "神奈川県" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Time Period(s)": { + "buckets": [ + { + "doc_count": 25, + "key": "2007" + }, + { + "doc_count": 20, + "key": "2014" + }, + { + "doc_count": 18, + "key": "2015" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Topic": { + "buckets": [ + { + "doc_count": 131, + "key": "Working conditions" + }, + { + "doc_count": 131, + "key": "労働条件" + }, + { + "doc_count": 87, + "key": "Employment" + }, + { + "doc_count": 87, + "key": "雇用" + }, + { + "doc_count": 64, + "key": "Consumption and consumer behaviour" + }, + { + "doc_count": 64, + "key": "消費と消費者行動" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "date_range": { + "available": { + "buckets": [ + { + "doc_count": 328, + "key": "*-2023-05-24", + "to": 1684886400000, + "to_as_string": "2023-05-24" + }, + { + "doc_count": 0, + "from": 1684886400000, + "from_as_string": "2023-05-24", + "key": "2023-05-24-*" + } + ] + }, + "doc_count": 328 + }, + "doc_count": 328, + "key": "1613031614318", + "no_available": { + "doc_count": 0 + } + }] + } + } + + let json_data3 = { + "aggregations": + { + "Access": { + "buckets": [ + { + "doc_count": 328, + "key": "restricted access" + }, + { + "doc_count": 328, + "key": "制約付きアクセス" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Language": { + "buckets": [ + { + "doc_count": 328, + "key": "jpn" + }, + { + "doc_count": 19, + "key": "eng" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Data Type": { + "buckets": [ + { + "doc_count": 328, + "key": "quantitative research" + }, + { + "doc_count": 328, + "key": "quantitative research: micro data" + }, + { + "doc_count": 328, + "key": "量的調査" + }, + { + "doc_count": 328, + "key": "量的調査: ミクロデータ" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Distributor": { + "buckets": [ + { + "doc_count": 328, + "key": "SSJ データアーカイブ" + }, + { + "doc_count": 328, + "key": "SSJDA" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Geographic Coverage": { + "buckets": [ + { + "doc_count": 217, + "key": "Japan" + }, + { + "doc_count": 217, + "key": "日本" + }, + { + "doc_count": 47, + "key": "tokyo" + }, + { + "doc_count": 47, + "key": "東京都" + }, + { + "doc_count": 36, + "key": "kanagawa" + }, + { + "doc_count": 36, + "key": "神奈川県" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Time Period(s)": { + "buckets": [ + { + "doc_count": 25, + "key": "2007" + }, + { + "doc_count": 20, + "key": "2014" + }, + { + "doc_count": 18, + "key": "2015" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "Topic": { + "buckets": [ + { + "doc_count": 131, + "key": "Working conditions" + }, + { + "doc_count": 131, + "key": "労働条件" + }, + { + "doc_count": 87, + "key": "Employment" + }, + { + "doc_count": 87, + "key": "雇用" + }, + { + "doc_count": 64, + "key": "Consumption and consumer behaviour" + }, + { + "doc_count": 64, + "key": "消費と消費者行動" + } + ], + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 0 + }, + "date_range": { + "available": { + "buckets": [ + { + "doc_count": 328, + "key": "*-2023-05-24", + "to": 1684886400000, + "to_as_string": "2023-05-24" + }, + { + "doc_count": 0, + "from": 1684886400000, + "from_as_string": "2023-05-24", + "key": "2023-05-24-*" + } + ] + }, + "doc_count": 328 + }, + "doc_count": 328, + "key": "1613031614318", + "no_available": { + "doc_count": 0 + } + } + + } diff --git a/app-facet-search/src/test/checkboxList.test.jsx b/app-facet-search/src/test/checkboxList.test.jsx new file mode 100644 index 0000000..b828e26 --- /dev/null +++ b/app-facet-search/src/test/checkboxList.test.jsx @@ -0,0 +1,155 @@ +import React from "react"; +import { fireEvent, render, screen } from '@testing-library/react'; +import RangeFacet from "../components/RangeFacet"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +test('list test for search function.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'CheckboxList'; + const displayNumber = 5; + + const {container} = render(); + const itemElement = container.querySelector('#' + CSS.escape('id_Data Language_chkbox_0')) + + const reSearchInvenio = (search) => { + } + window.invenioSearchFunctions = {}; + window.invenioSearchFunctions.reSearchInvenio = reSearchInvenio; + fireEvent.click(itemElement); +}); + +test('list test for detail function.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'CheckboxList'; + const displayNumber = 5; + + const {container} = render(); + const itemElement = container.querySelector('#' + CSS.escape('id_Data Language_chkbox_0')) + + Object.defineProperty(window, 'location', { + value: { + href: '' + }, + writable: true, + }); + fireEvent.click(itemElement); +}); + +test('modal test for search function.', () => { + require ('css.escape'); + + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = false; + const uiType = 'CheckboxList'; + const displayNumber = 1; + + const reSearchInvenio = (search) => { + } + window.invenioSearchFunctions = {}; + window.invenioSearchFunctions.reSearchInvenio = reSearchInvenio; + Object.defineProperty(window, 'location', { + value: { + search: '' + }, + writable: true, + }); + + + const {container} = render(); + // open modal + const linkElement = screen.getByText('. . . See More') + fireEvent.click(linkElement); + + // check item + const itemElement = container.querySelector('#' + CSS.escape('id_Data Language_chkbox_mdl_0')) + itemElement.checked = false; + + // search + const searchButton = screen.getByRole('button'); + fireEvent.click(searchButton); + + // close modal + const cancelElement = screen.getByText('cancel') + fireEvent.click(cancelElement); +}); + +test('modal test for detail function.', () => { + require ('css.escape'); + + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = false; + const uiType = 'CheckboxList'; + const displayNumber = 1; + + window.invenioSearchFunctions = null; + Object.defineProperty(window, 'location', { + value: { + search: '', + href: '' + }, + writable: true, + }); + + const {container} = render(); + // open modal + const linkElement = screen.getByText('. . . See More') + fireEvent.click(linkElement); + + // check item + const itemElement = container.querySelector('#' + CSS.escape('id_Data Language_chkbox_mdl_0')) + itemElement.checked = true; + + // search + const searchButton = screen.getByRole('button'); + fireEvent.click(searchButton); + + // close modal + const cancelElement = screen.getByText('cancel') + fireEvent.click(cancelElement); +}); diff --git a/app-facet-search/src/test/facet.test.jsx b/app-facet-search/src/test/facet.test.jsx new file mode 100644 index 0000000..0db8a3e --- /dev/null +++ b/app-facet-search/src/test/facet.test.jsx @@ -0,0 +1,76 @@ +import React from "react"; +import { fireEvent, render, screen } from '@testing-library/react'; +import RangeFacet from "../components/RangeFacet"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +test('facet contents open.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'CheckboxList'; + const displayNumber = 5; + + const {container} = render(); +}); + +test('facet contents close. Selected.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = false; + const uiType = 'CheckboxList'; + const displayNumber = 5; + Object.defineProperty(window, 'location', { + value: { + search: 'Data%20Language=test' + }, + writable: true, + }); + + const {container} = render(); +}); + +test('facet contents close.', () => { + require ('css.escape'); + + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = false; + const uiType = 'CheckboxList'; + const displayNumber = 1; + + const {container} = render(); + const facetElement = container.querySelector('.pull-right') + fireEvent.click(facetElement); + +}); \ No newline at end of file diff --git a/app-facet-search/src/test/multiselect.test.jsx b/app-facet-search/src/test/multiselect.test.jsx new file mode 100644 index 0000000..0406a30 --- /dev/null +++ b/app-facet-search/src/test/multiselect.test.jsx @@ -0,0 +1,102 @@ +import React from "react"; +import { fireEvent, render, screen } from '@testing-library/react'; +import RangeFacet from "../components/RangeFacet"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +test('select test for search function.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'SelectBox'; + const displayNumber = null; + + const {container} = render(); + const selectElement = container.querySelector('.select__input'); + const DOWN_ARROW = { keyCode: 40 }; + fireEvent.keyDown(selectElement, DOWN_ARROW); + + Object.defineProperty(window, 'location', { + value: { + search: '' + }, + writable: true, + }); + + const reSearchInvenio = (search) => { + } + window.invenioSearchFunctions = {}; + window.invenioSearchFunctions.reSearchInvenio = reSearchInvenio; + + const itemElement = screen.getByText('jpn(20821)'); + fireEvent.click(itemElement); + +}); + +test('select test for detail function.', () => { + require ('css.escape'); + const item = {buckets: [{doc_count: 20821, key: 'jpn'},{doc_count: 219, key: 'eng'}]}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'SelectBox'; + const displayNumber = null; + + window.invenioSearchFunctions = null; + Object.defineProperty(window, 'location', { + value: { + search: '?q=0&Data Language=eng', + href: '' + }, + writable: true, + }); + + const {container} = render(); + const selectElement = container.querySelector('.select__input'); + const DOWN_ARROW = { keyCode: 40 }; + fireEvent.keyDown(selectElement, DOWN_ARROW); + + const itemElement = screen.getByText('jpn(20821)'); + fireEvent.click(itemElement); + +}); + +test('select test for empty.', () => { + require ('css.escape'); + const item = {buckets: null}; + const nameshow = 'デ一タの言語'; + const name = 'Data Language'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'SelectBox'; + const displayNumber = null; + + const {container} = render(); + +}); \ No newline at end of file diff --git a/app-facet-search/src/test/rangeslider.test.jsx b/app-facet-search/src/test/rangeslider.test.jsx new file mode 100644 index 0000000..0cb24a8 --- /dev/null +++ b/app-facet-search/src/test/rangeslider.test.jsx @@ -0,0 +1,121 @@ +import React from "react"; +import { fireEvent, render, screen, createEvent } from '@testing-library/react'; +import RangeFacet from "../components/RangeFacet"; +import 'rc-slider/assets/index.css'; +import 'rc-tooltip/assets/bootstrap.css'; +import '../../src/index.css'; + +test('slider test for search function.', () => { + require ('css.escape'); + window.facetSearchFunctions = {}; + const item = {buckets: [{doc_count: 1454, key: '1926'},{doc_count: 1445, key: '1927'},{doc_count: 1374, key: '1928'},{doc_count: 27, key: '2003'}]}; + const nameshow = '対象時期'; + const name = 'Time Period(s)'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'RangeSlider'; + const displayNumber = null; + + const reSearchInvenio = (search) => { + } + window.invenioSearchFunctions = {}; + window.invenioSearchFunctions.reSearchInvenio = reSearchInvenio; + + const {container} = render(); + // search + const searchButton = screen.getByRole('button'); + fireEvent.click(searchButton); + + Object.defineProperty(window, 'location', { + value: { + search: '?q=0&Time Period(s)=1940--2015', + href: '' + }, + writable: true, + }); + fireEvent.click(searchButton); + + window.facetSearchFunctions['Time Period(s)_clearSliderValue']() +}); + +test('slider test for detail function.', () => { + require ('css.escape'); + window.facetSearchFunctions = {}; + const item = {buckets: [{doc_count: 1454, key: '1926'},{doc_count: 1445, key: '1927'},{doc_count: 1374, key: '1928'},{doc_count: 27, key: '2003'}]}; + const nameshow = '対象時期'; + const name = 'Time Period(s)'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'RangeSlider'; + const displayNumber = null; + + window.invenioSearchFunctions = null; + Object.defineProperty(window, 'location', { + value: { + search: '?q=0&Time Period(s)=1940--2015', + href: '' + }, + writable: true, + }); + + const {container} = render(); + // search + const searchButton = screen.getByRole('button'); + fireEvent.click(searchButton); + + window.facetSearchFunctions['Time Period(s)_clearSliderValue']() +}); + +test('validation test', () => { + require ('css.escape'); + window.facetSearchFunctions = {}; + const item = {buckets: [{doc_count: 1454, key: '1926'},{doc_count: 1445, key: '1927'},{doc_count: 1374, key: '1928'},{doc_count: 27, key: '2003'}]}; + const nameshow = '対象時期'; + const name = 'Time Period(s)'; + const key = 0; + const LABELS = { + Goto: "検索", + cancel: "cancel", + facetSliderCorrelationValidation: "範囲fromは範囲to以下にしてください。", + facetSliderRequiredValidation: "値を設定してください。", + facetSliderValueValidation: "正しい値を設定してください。", + search: "検索"}; + const isOpen = true; + const uiType = 'RangeSlider'; + const displayNumber = null; + + const {container} = render(); + + const searchButton = screen.getByRole('button'); + const headElement = container.querySelector('#' + CSS.escape('id_Time Period(s)_slider_input_head')); + const tailElement = container.querySelector('#' + CSS.escape('id_Time Period(s)_slider_input_tail')); + + // must validation + headElement.value = ''; + tailElement.value = ''; + fireEvent.click(searchButton); + + // number vlidation + fireEvent.change(headElement, {target: {value: '-1926'}}) + fireEvent.change(tailElement, {target: {value: '20e5'}}) + fireEvent.click(searchButton); + + // correlation + fireEvent.change(headElement, {target: {value: '2015'}}) + fireEvent.change(tailElement, {target: {value: '1985'}}) + fireEvent.click(searchButton); +}); \ No newline at end of file diff --git a/app-facet-search/src/test/setup_en.js b/app-facet-search/src/test/setup_en.js new file mode 100644 index 0000000..6329eb9 --- /dev/null +++ b/app-facet-search/src/test/setup_en.js @@ -0,0 +1,4 @@ +var dom = '
'; +var div = document.createElement('div'); +div.innerHTML = dom; +document.body.appendChild(div); \ No newline at end of file diff --git a/app-facet-search/src/test/setup_jp.js b/app-facet-search/src/test/setup_jp.js new file mode 100644 index 0000000..800cd5e --- /dev/null +++ b/app-facet-search/src/test/setup_jp.js @@ -0,0 +1,4 @@ +var dom = '
'; +var div = document.createElement('div'); +div.innerHTML = dom; +document.body.appendChild(div); \ No newline at end of file diff --git a/cp_app_facet_search.sh b/cp_app_facet_search.sh index 72507d0..30491a6 100755 --- a/cp_app_facet_search.sh +++ b/cp_app_facet_search.sh @@ -17,8 +17,11 @@ fi TARGETDIR=$WEKODIR/modules # args-check-end +# Merging Style Files +cat ./app-facet-search/build/static/css/2.*chunk.css ./app-facet-search/build/static/css/main.*.chunk.css > ./app-facet-search/build/static/css/facet_chunk.css + # copy-begin -cp -p ./app-facet-search/build/static/css/*.chunk.css ${TARGETDIR}/weko-search-ui/weko_search_ui/static/css/weko_search_ui/facet_chunk.css +cp -p ./app-facet-search/build/static/css/facet_chunk.css ${TARGETDIR}/weko-search-ui/weko_search_ui/static/css/weko_search_ui/facet_chunk.css cp -p ./app-facet-search/build/static/js/main.*.chunk.js ${TARGETDIR}/weko-search-ui/weko_search_ui/static/js/weko_search_ui/facet.main.chunk.js cp -p ./app-facet-search/build/static/js/runtime-main.*.js ${TARGETDIR}/weko-search-ui/weko_search_ui/static/js/weko_search_ui/facet.runtime-main.js cp -p ./app-facet-search/build/static/js/2.*.chunk.js ${TARGETDIR}/weko-search-ui/weko_search_ui/static/js/weko_search_ui/facet.chunk.js