Create functionality to change opacity image size
Change-Id: Iee7f6d3c8e190bf26eed932b81543db72211caa4
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode.html b/gr-opacity-diff-mode/gr-opacity-diff-mode.html
index 71a5eff..0a20ea9 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode.html
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode.html
@@ -24,7 +24,8 @@
display: block;
margin:auto;
position: absolute;
- width: 500px;
+ height: var(--img-height);
+ width: var(--img-width);
}
#imageRevision {
opacity: var(--my-opacity-value);
@@ -40,6 +41,15 @@
<img id="imageBase"/>
<img id="imageRevision" data-opacity$="{{opacityValue}}"/>
</div>
+ <div>
+ <label>
+ <input
+ id="scaleSizesToggle"
+ type="checkbox"
+ on-tap="handleScaleSizesToggle">
+ Scale to same size
+ </label>
+ </div>
<label for="opacitySlider">Opacity</label>
<input
type="range"
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode.js b/gr-opacity-diff-mode/gr-opacity-diff-mode.js
index b9016ee..7e3591d 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode.js
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode.js
@@ -41,5 +41,17 @@
computeSrcString(image) {
return 'data:' + image['type'] + ';base64, ' + image['body'];
},
+
+ handleScaleSizesToggle() {
+ let width;
+ let height;
+ if (this.$.scaleSizesToggle.checked) {
+ width = Math.max(this.revisionImage._width, this.baseImage._width);
+ height = Math.max(this.revisionImage._height, this.baseImage._height);
+ }
+ this.customStyle['--img-width'] = width ? width + 'px' : null;
+ this.customStyle['--img-height'] = height ? height + 'px' : null;
+ this.updateStyles();
+ },
});
})();
\ No newline at end of file
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html b/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
index f20db99..6c63c1a 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
@@ -62,5 +62,61 @@
assert.equal(element.computeSrcString(element.revisionImage),
expectedOutcome);
});
+
+ suite('size scaling', () => {
+ test('base image larger', () => {
+ element.baseImage = {
+ _width: 200,
+ _height: 300,
+ };
+ element.revisionImage = {
+ _width: 100,
+ _height: 90,
+ };
+ assert.equal(element.customStyle['--img-width'], undefined);
+ assert.equal(element.customStyle['--img-height'], undefined);
+ element.$.scaleSizesToggle.checked = true;
+ element.handleScaleSizesToggle();
+ flushAsynchronousOperations();
+ assert.equal(element.customStyle['--img-width'], '200px');
+ assert.equal(element.customStyle['--img-height'], '300px');
+ });
+
+ test('revisionImage larger', () => {
+ element.baseImage = {
+ _width: 200,
+ _height: 300,
+ };
+ element.revisionImage = {
+ _width: 400,
+ _height: 500,
+ };
+ assert.equal(element.customStyle['--img-width'], null);
+ assert.equal(element.customStyle['--img-height'], null);
+ element.$.scaleSizesToggle.checked = true;
+ element.handleScaleSizesToggle();
+ flushAsynchronousOperations();
+ assert.equal(element.customStyle['--img-width'], '400px');
+ assert.equal(element.customStyle['--img-height'], '500px');
+ });
+
+ test('bigger base width, smaller base height', () => {
+ element.baseImage = {
+ _width: 200,
+ _height: 300,
+ };
+ element.revisionImage = {
+ _width: 140,
+ _height: 400,
+ };
+ assert.equal(element.customStyle['--img-width'], null);
+ assert.equal(element.customStyle['--img-height'], null);
+ element.$.scaleSizesToggle.checked = true;
+ element.handleScaleSizesToggle();
+ flushAsynchronousOperations();
+ assert.equal(element.customStyle['--img-width'], '200px');
+ assert.equal(element.customStyle['--img-height'], '400px');
+ });
+ });
});
</script>
\ No newline at end of file
diff --git a/gr-resemble-diff-mode/gr-resemble-diff-mode_test.html b/gr-resemble-diff-mode/gr-resemble-diff-mode_test.html
index c9ffb5d..9fe5161 100644
--- a/gr-resemble-diff-mode/gr-resemble-diff-mode_test.html
+++ b/gr-resemble-diff-mode/gr-resemble-diff-mode_test.html
@@ -45,7 +45,7 @@
element = fixture('basicFixture');
});
- teardown(() => { sandbox.restore(); })
+ teardown(() => { sandbox.restore(); });
test('test initialization', () => {
assert.notEqual(element, null);