diff --git a/.hound.yml b/.hound.yml index 360769f6a..90a7f6095 100644 --- a/.hound.yml +++ b/.hound.yml @@ -7,6 +7,6 @@ eslint: python: enabled: true config_file: tools/.flake8.ini -scss: +sass-lint: enabled: true - config_file: assets/css/.scss-lint.yml + config_file: assets/css/.sass-lint.yml diff --git a/.travis.yml b/.travis.yml index 7ea3be186..94710c45b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,16 @@ +sudo: required +dist: trusty language: node_js node_js: - stable +before_install: + - sudo apt-get install python3 python3-pip +install: + - npm install jsonlint eslint htmlhint sass-lint -g + - pip3 install flake8 script: - find assets/strings -type f -name '*.json' -exec jsonlint -q '{}' + - - eslint -c assets/js/.eslintrc.json assets/js/*.js + - eslint --config assets/js/.eslintrc.json assets/js/*.js - htmlhint --config .htmlhintrc.json *.html -before_install: - - npm install jsonlint eslint htmlhint -g + - sass-lint --config assets/css/.sass-lint.yml --verbose --no-exit --max-warnings 0 + - flake8 --config tools/.flake8.ini *.py **/**.py **/**/*.py diff --git a/assets/css/.sass-lint.yml b/assets/css/.sass-lint.yml new file mode 100644 index 000000000..9e1673ef5 --- /dev/null +++ b/assets/css/.sass-lint.yml @@ -0,0 +1,19 @@ +files: + ignore: assets/css/bootstrap.css + include: 'assets/css/**/*.css' +rules: + no-ids: 0 + single-line-per-selector: 0 + no-color-literals: 0 + force-element-nesting: 0 + force-pseudo-nesting: 0 + force-attribute-nesting: 0 + no-vendor-prefixes: 0 + no-css-comments: 0 + no-transition-all: 0 + no-qualifying-elements: + - 1 + - allow-element-with-attribute: true + class-name-format: + - 1 + - convention: camelcase diff --git a/assets/css/.scss-lint.yml b/assets/css/.scss-lint.yml deleted file mode 100644 index abbdf05bc..000000000 --- a/assets/css/.scss-lint.yml +++ /dev/null @@ -1,25 +0,0 @@ -scss_files: 'assets/css/**/*.css' -exclude: 'bootstrap.css' - -severity: error - -linters: - Indentation: - width: 4 - ColorVariable: - enabled: false - SelectorFormat: - severity: warning - convention: camel_case - Comment: - enabled: false - IdSelector: - enabled: false - VendorPrefix: - enabled: false - QualifyingElement: - severity: warning - ImportantRule: - severity: warning - MergeableSelector: - severity: warning diff --git a/assets/css/style.css b/assets/css/style.css index 7e08f33cb..e0f1626fb 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -13,10 +13,10 @@ h2 { } .blurred { - opacity: .5; -moz-transition: all 1s ease; -o-transition: all 1s ease; -webkit-transition: all 1s ease; + opacity: .5; transition: all 1s ease; } @@ -45,11 +45,7 @@ h2 { margin-top: 7px; } -.modal-body h4:first-child { - margin-top: 0 !important; -} - -.nav-pills { +.nav-pills { /* sass-lint:disable-line class-name-format */ cursor: pointer; } @@ -66,30 +62,26 @@ h2 { color: #000; } -html[dir=ltr] .clearButton { +html[dir='ltr'] .clearButton { right: 18px; } -html[dir=rtl] .clearButton { +html[dir='rtl'] .clearButton { left: 18px; } #backToTop { + bottom: 20px; + opacity: .5; position: fixed; - z-index: 999; right: 20px; - bottom: 20px; - opacity: 0.5; + z-index: 999; } #backToTop:hover { opacity: 1; } -#backToTop .fa-arrow-up { - color: white; -} - /* Navbar */ .apertiumBox { @@ -106,7 +98,7 @@ html[dir=rtl] .clearButton { font-family: 'DejaVu Sans Fallback'; font-style: italic; font-weight: bold; - src: url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'); + src: url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'); } .apertiumLogo, @@ -136,19 +128,19 @@ html[dir=rtl] .clearButton { z-index: 2; } -html[dir=ltr] .apertiumSubLogo { +html[dir='ltr'] .apertiumSubLogo { left: 6.5em; } -html[dir=rtl] .apertiumSubLogo { +html[dir='rtl'] .apertiumSubLogo { right: 3em; } -html[dir=ltr] .apertiumLogo { +html[dir='ltr'] .apertiumLogo { left: 2.25em; } -html[dir=rtl] .apertiumLogo { +html[dir='rtl'] .apertiumLogo { right: 2.25em; } @@ -156,12 +148,12 @@ html[dir=rtl] .apertiumLogo { font-size: 16px; } -.navbar-default .nav { +.navbar-default .nav { /* sass-lint:disable-line class-name-format */ margin-top: 5px; } @media(max-width: 768px) { - html[dir=ltr] .navbar-header { + html[dir='ltr'] .navbar-header { /* sass-lint:disable-line class-name-format */ padding-left: 15px; } } @@ -173,23 +165,23 @@ html[dir=rtl] .apertiumLogo { margin: 0 0 10px; } -.navbar div.container { +.navbar .container { line-height: 1.5em; } @media(max-width: 768px) { - html[dir=rtl] .navbar-header { + html[dir='rtl'] .navbar-header { /* sass-lint:disable-line class-name-format */ padding-right: 5px; } } /* Translation */ -html[dir=ltr] .languageName { +html[dir='ltr'] .languageName { padding-left: .5em; } -html[dir=rtl] .languageName { +html[dir='rtl'] .languageName { padding-right: .5em; } @@ -207,33 +199,33 @@ html[dir=rtl] .languageName { cursor: pointer; } -html[dir=ltr] #srcLanguages { +html[dir='ltr'] #srcLanguages { left: 80%; min-width: 500px; right: auto; } -html[dir=ltr] #dstLanguages { +html[dir='ltr'] #dstLanguages { left: auto; min-width: 500px; right: 0; } -html[dir=rtl] #dstLanguages { +html[dir='rtl'] #dstLanguages { left: 0; min-width: 500px; right: auto; } -html[dir=rtl] #srcLanguages { +html[dir='rtl'] #srcLanguages { left: auto; min-width: 500px; right: 80%; } .disabledLang { - color: #808080 !important; - opacity: 1 !important; + color: #808080; + opacity: 1 !important; /* sass-lint:disable-line no-important */ } #originalText, @@ -242,27 +234,26 @@ html[dir=rtl] #srcLanguages { } @media(max-width: 768px) { - textarea#originalText { + #originalText { margin-bottom: 1em; } } #srcLangSelectors { - z-index: 100; width: calc(100% - 34px); } @media(min-width: 768px) { - button.swapLangBtn { + .swapLangBtn { position: absolute; top: 0; } - html[dir=ltr] button.swapLangBtn { + html[dir='ltr'] .swapLangBtn { right: 15px; } - html[dir=rtl] button.swapLangBtn { + html[dir='rtl'] .swapLangBtn { left: 15px; } } @@ -273,7 +264,7 @@ html[dir=rtl] #srcLanguages { /* Analysis */ -div.unit { +.unit { margin-left: 30px; } @@ -304,7 +295,7 @@ body { /* Wrapper for page content to push down footer */ #wrap { - height: auto !important; + height: auto !important; /* sass-lint:disable-line no-important */ margin: 0 auto -60px; /* Negative indent footer by it's height */ min-height: 99.5%; } @@ -349,10 +340,10 @@ body { /* RTL Stuff */ -html[dir=rtl] .pull-right:not(#rtlChecker) { - float: left !important; +html[dir='rtl'] .pull-right:not(#rtlChecker) { /* sass-lint:disable-line class-name-format */ + float: left !important; /* sass-lint:disable-line no-important */ } -html[dir=rtl] .pull-left:not(#rtlChecker) { - float: right !important; +html[dir='rtl'] .pull-left:not(#rtlChecker) { /* sass-lint:disable-line class-name-format */ + float: right !important; /* sass-lint:disable-line no-important */ } diff --git a/assets/js/translator.js b/assets/js/translator.js index 297c04b93..3f4cb3d03 100644 --- a/assets/js/translator.js +++ b/assets/js/translator.js @@ -133,8 +133,6 @@ if(modeEnabled('translation')) { synchronizeTextareaHeights(); }); - $(window).resize(synchronizeTextareaHeights); - $('#originalText').blur(function () { persistChoices('translator', true); }); diff --git a/assets/js/util.js b/assets/js/util.js index 6037329b4..7a3bc9efd 100644 --- a/assets/js/util.js +++ b/assets/js/util.js @@ -11,6 +11,8 @@ var TEXTAREA_AUTO_RESIZE_MINIMUM_WIDTH = 768, BACK_TO_TOP_BUTTON_ACTIVATION_HEIGHT = 300, THRESHOLD_REQUEST_URL_LENGTH = 2000; // maintain 48 characters buffer for generated parameters +var originalTextScrollHeight; + // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill /* eslint-disable */ if (typeof Object.assign != 'function') { @@ -162,6 +164,9 @@ $(document).ready(function () { return false; }); + $('#originalText').mouseup(function () { + $('#originalText').css('overflow-y', $('#originalText').height() < originalTextScrollHeight ? 'scroll' : 'hidden'); + }); }); if(config.PIWIK_SITEID && config.PIWIK_URL) { @@ -278,7 +283,7 @@ function synchronizeTextareaHeights() { 'overflow-y': 'hidden', 'height': 'auto' }); - var originalTextScrollHeight = $('#originalText')[0].scrollHeight; + originalTextScrollHeight = $('#originalText')[0].scrollHeight; $('#originalText').css('height', originalTextScrollHeight + 'px'); $('#translatedText').css('height', originalTextScrollHeight + 'px'); } diff --git a/assets/strings/localisation-tools.py b/assets/strings/localisation-tools.py index 89123f9f0..5d3a2381b 100755 --- a/assets/strings/localisation-tools.py +++ b/assets/strings/localisation-tools.py @@ -16,6 +16,7 @@ def dumpJSON(f, data): def loadJSON(f): return json.loads(f.read(), object_pairs_hook=OrderedDict) + if __name__ == '__main__': parser = argparse.ArgumentParser(description='Manipulate localisation files', formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('actions', nargs='+', help="new/create: creates a new localisation file\n" diff --git a/tools/localise-html.py b/tools/localise-html.py index 478849c12..6dc3f35da 100755 --- a/tools/localise-html.py +++ b/tools/localise-html.py @@ -111,6 +111,7 @@ def run(html_path, json_path, out_path, conf_path, fallback_path): with open(out_path, 'w') as out: out.write("".join(parser.output)) + if __name__ == "__main__": argparser = argparse.ArgumentParser(description='Localise an HTML file using a json file from stdin') argparser.add_argument('template', help='HTML file to localise')