diff --git a/.travis.yml b/.travis.yml index 62e80d413a..2e10547a8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ before_install: - export CHROME_BIN=/usr/bin/google-chrome - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start + - cd ng2-components/ng2-alfresco-core; npm version patch; sed -i "s/0\\.0\\.0-PLACEHOLDER/^0.1.0/g" package.json; npm install; npm link env: matrix: @@ -29,7 +30,7 @@ env: - MODULE=ng2-alfresco-viewer before_script: - - cd ./ng2-components/$MODULE; npm install + - cd ng2-components/$MODULE; npm version patch; sed -i "s/0\\.0\\.0-PLACEHOLDER/^0.1.0/g" package.json; npm install; npm link ng2-alfresco-core; npm run travis - ls -ltrh ./node_modules/ script: npm run test # Send coverage data to Coveralls diff --git a/demo-shell-ng2/package.json b/demo-shell-ng2/package.json index 00dcdc5797..a527db03bf 100644 --- a/demo-shell-ng2/package.json +++ b/demo-shell-ng2/package.json @@ -76,13 +76,13 @@ "flag-icon-css": "2.3.0", "alfresco-js-api": "^0.1.0", - "ng2-alfresco-core": "^0.1.36", - "ng2-alfresco-datatable": "^0.1.12", - "ng2-alfresco-documentlist": "^0.1.34", - "ng2-alfresco-login": "^0.1.29", - "ng2-alfresco-search": "^0.1.21", - "ng2-alfresco-upload": "^0.1.49", - "ng2-alfresco-viewer": "^0.1.32" + "ng2-alfresco-core": "0.0.0-PLACEHOLDER", + "ng2-alfresco-datatable": "0.0.0-PLACEHOLDER", + "ng2-alfresco-documentlist": "0.0.0-PLACEHOLDER", + "ng2-alfresco-login": "0.0.0-PLACEHOLDER", + "ng2-alfresco-search": "0.0.0-PLACEHOLDER", + "ng2-alfresco-upload": "0.0.0-PLACEHOLDER", + "ng2-alfresco-viewer": "0.0.0-PLACEHOLDER" }, "devDependencies": { "browser-sync": "2.10.0", diff --git a/ng2-components/ng2-alfresco-core/package.json b/ng2-components/ng2-alfresco-core/package.json index 193b6d76ef..e0227b50a4 100644 --- a/ng2-components/ng2-alfresco-core/package.json +++ b/ng2-components/ng2-alfresco-core/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-core", "description": "Alfresco Angular 2 Components core", - "version": "0.1.39", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -24,7 +24,8 @@ "test-browser": "karma start karma.conf.js --reporters kjhtml ", "posttest": "node_modules/.bin/remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "prepublish": "npm run build" + "prepublish": "npm run build", + "travis": "echo 'placeholder'" }, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ng2-components/ng2-alfresco-datatable/package.json b/ng2-components/ng2-alfresco-datatable/package.json index 300fe26274..7c6cbd3dc7 100644 --- a/ng2-components/ng2-alfresco-datatable/package.json +++ b/ng2-components/ng2-alfresco-datatable/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-datatable", "description": "Alfresco Angular2 DataTable Component", - "version": "0.1.17", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -68,7 +68,7 @@ "rxjs": "5.0.0-beta.6", "zone.js": "0.6.12", "rimraf": "2.5.2", - "ng2-alfresco-core": "^0.1.35" + "ng2-alfresco-core": "0.0.0-PLACEHOLDER" }, "peerDependencies": { "material-design-icons": "^2.2.3", diff --git a/ng2-components/ng2-alfresco-documentlist/package.json b/ng2-components/ng2-alfresco-documentlist/package.json index 3f815185b9..254985267d 100644 --- a/ng2-components/ng2-alfresco-documentlist/package.json +++ b/ng2-components/ng2-alfresco-documentlist/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-documentlist", "description": "Alfresco Angular2 Document List Component", - "version": "0.1.37", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -75,8 +75,8 @@ "rimraf": "2.5.2", "ng2-translate": "2.2.2", "alfresco-js-api": "^0.1.0", - "ng2-alfresco-core": "^0.1.35", - "ng2-alfresco-datatable": "^0.1.17" + "ng2-alfresco-core": "0.0.0-PLACEHOLDER", + "ng2-alfresco-datatable": "0.0.0-PLACEHOLDER" }, "peerDependencies": { "material-design-icons": "^2.2.3", diff --git a/ng2-components/ng2-alfresco-login/package.json b/ng2-components/ng2-alfresco-login/package.json index aee58f95d3..0ca5687ec8 100644 --- a/ng2-components/ng2-alfresco-login/package.json +++ b/ng2-components/ng2-alfresco-login/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-login", "description": "Alfresco Angular2 Login Component", - "version": "0.1.32", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -27,7 +27,8 @@ "test-browser": "concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", "posttest": "node_modules/.bin/remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "prepublish": "npm run build" + "prepublish": "npm run build", + "travis": "npm link ng2-alfresco-core" }, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -81,7 +82,7 @@ "zone.js": "0.6.12", "rimraf": "2.5.2", "ng2-translate": "2.2.2", - "ng2-alfresco-core": "^0.1.35", + "ng2-alfresco-core": "0.0.0-PLACEHOLDER", "alfresco-js-api": "^0.1.0", "coveralls": "^2.11.9" }, diff --git a/ng2-components/ng2-alfresco-search/package.json b/ng2-components/ng2-alfresco-search/package.json index c986da3310..1897c09d80 100644 --- a/ng2-components/ng2-alfresco-search/package.json +++ b/ng2-components/ng2-alfresco-search/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-search", "description": "Alfresco Angular2 Search Component", - "version": "0.1.25", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -27,7 +27,8 @@ "test-browser": "concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", "posttest": "node_modules/.bin/remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "prepublish": "npm run build" + "prepublish": "npm run build", + "travis": "npm link ng2-alfresco-core" }, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -75,7 +76,7 @@ "ng2-translate": "2.2.2", "material-design-lite": "1.1.3", "alfresco-js-api": "^0.1.0", - "ng2-alfresco-core": "^0.1.35" + "ng2-alfresco-core": "0.0.0-PLACEHOLDER" }, "peerDependencies": { "material-design-icons": "^2.2.3", diff --git a/ng2-components/ng2-alfresco-upload/package.json b/ng2-components/ng2-alfresco-upload/package.json index 4666f1b837..e9b81ead71 100644 --- a/ng2-components/ng2-alfresco-upload/package.json +++ b/ng2-components/ng2-alfresco-upload/package.json @@ -1,7 +1,7 @@ { "name": "ng2-alfresco-upload", "description": "Alfresco Angular2 Upload Component", - "version": "0.1.55", + "version": "0.0.0-PLACEHOLDER", "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", @@ -25,7 +25,8 @@ "test-browser": "concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", "posttest": "node_modules/.bin/remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "prepublish": "npm run build" + "prepublish": "npm run build", + "travis": "npm link ng2-alfresco-core" }, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -77,7 +78,7 @@ "rimraf": "2.5.2", "ng2-translate": "2.2.2", "alfresco-js-api": "^0.1.0", - "ng2-alfresco-core": "^0.1.35" + "ng2-alfresco-core": "0.0.0-PLACEHOLDER" }, "peerDependencies": { "material-design-icons": "^2.2.3", diff --git a/ng2-components/ng2-alfresco-viewer/package.json b/ng2-components/ng2-alfresco-viewer/package.json index a9ad02e8f0..24866e44b7 100644 --- a/ng2-components/ng2-alfresco-viewer/package.json +++ b/ng2-components/ng2-alfresco-viewer/package.json @@ -1,8 +1,8 @@ { "name": "ng2-alfresco-viewer", "description": "Alfresco documents viewer", - "version": "0.1.35", - "author": "Eugenio Romano", + "version": "0.0.0-PLACEHOLDER", + "author": "Alfresco Software, Ltd.", "scripts": { "clean": "rimraf dist node_modules typings", "typings": "typings install", @@ -25,7 +25,8 @@ "test-browser": "concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", "posttest": "node_modules/.bin/remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "prepublish": "npm run build" + "prepublish": "npm run build", + "travis": "echo 'placeholder'" }, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ng2-components/ng2-alfresco-viewer/src/assets/PDFViewer.mock.ts b/ng2-components/ng2-alfresco-viewer/src/assets/PDFViewer.mock.ts index afeed2b2a6..d2c597e7aa 100644 --- a/ng2-components/ng2-alfresco-viewer/src/assets/PDFViewer.mock.ts +++ b/ng2-components/ng2-alfresco-viewer/src/assets/PDFViewer.mock.ts @@ -28,15 +28,33 @@ export class PDFViewermock { [{ width: 793, scale: 1, - update: this.update + update: this.update, + div: { + offsetTop: 400 + }, + viewport: { + height: 400 + } }, { width: 793, scale: 1, - update: this.update + update: this.update, + div: { + offsetTop: 800 + }, + viewport: { + height: 400 + } }, { width: 793, scale: 1, - update: this.update + update: this.update, + div: { + offsetTop: 1200 + }, + viewport: { + height: 400 + } }]; _currentPageNumber: number = 0; diff --git a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.html b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.html index 8d2007d9e1..eba85c7581 100644 --- a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.html +++ b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.html @@ -1,6 +1,6 @@
-
+
diff --git a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts index 6939c87ead..4c8f0d8f8c 100644 --- a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts +++ b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts @@ -346,8 +346,7 @@ describe('PdfViewer', () => { })); }); - describe('Rezize interaction', () => { - + describe('Resize interaction', () => { it('resize event should trigger setScaleUpdatePages', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .createAsync(PdfViewerComponent) @@ -370,4 +369,33 @@ describe('PdfViewer', () => { })); }); + describe('scroll interaction', () => { + it('scroll page should return the current page', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + + spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); + spyOn(component, 'initPDFViewer').and.callFake(() => { + component.pdfViewer = new PDFViewermock(); + }); + + component.urlFile = 'fake-url-file'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(component.displayPage).toBe(1); + component.inputPage('4'); + fixture.detectChanges(); + expect(component.displayPage).toBe(4); + component.watchScroll({scrollTop: 10000}); + expect(component.displayPage).toBe(4); + }).catch((error) => { + expect(error).toBeUndefined(); + }); + }); + })); + }); + }); diff --git a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.ts b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.ts index b6a14f8d95..238b679ae4 100644 --- a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.ts +++ b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.ts @@ -91,6 +91,10 @@ export class PdfViewerComponent { let documentContainer = document.getElementById('viewer-pdf-container'); let viewer: any = document.getElementById('viewer-viewerPdf'); + window.document.addEventListener('scroll', (event) => { + this.watchScroll(event.target); + }, true); + this.pdfViewer = new PDFJS.PDFViewer({ container: documentContainer, viewer: viewer @@ -284,6 +288,50 @@ export class PdfViewerComponent { } } + /** + * Litener Scroll Event + * + * @param {any} target + */ + watchScroll(target) { + let outputPage = this.getVisibleElement(target); + if (outputPage) { + this.page = outputPage.id; + this.displayPage = this.page; + } + } + + /** + * find out what elements are visible within a scroll pane + * + * @param {any} target + * + * @returns {Object} page + */ + getVisibleElement(target) { + return this.pdfViewer._pages.find((page) => { + return this.isOnScreen(page, target); + }); + } + + /** + * check if a page is visible + * + * @param {any} page + * @param {any} target + * + * @returns {boolean} + */ + isOnScreen(page: any, target: any) { + let viewport: any = {}; + viewport.top = target.scrollTop; + viewport.bottom = viewport.top + target.scrollHeight; + let bounds: any = {}; + bounds.top = page.div.offsetTop; + bounds.bottom = bounds.top + page.viewport.height; + return ((bounds.top <= viewport.bottom) && (bounds.bottom >= viewport.top)); + }; + /** * Litener Keyboard Event * @param {KeyboardEvent} event diff --git a/scripts/npm-link-demo-shell.sh b/scripts/npm-link-demo-shell.sh new file mode 100755 index 0000000000..df256f48b4 --- /dev/null +++ b/scripts/npm-link-demo-shell.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +for PACKAGE in \ + ng2-alfresco-core \ + ng2-alfresco-datatable \ + ng2-alfresco-documentlist \ + ng2-alfresco-login \ + ng2-alfresco-search \ + ng2-alfresco-upload \ + ng2-alfresco-viewer +do + DESTDIR=././../ng2-components/${PACKAGE} + echo "====== linking component: ${DESTDIR} =====" + npm link ${DESTDIR} --access public +done + +cd ./../demo-shell-ng2 + +for PACKAGE in \ + ng2-alfresco-core \ + ng2-alfresco-datatable \ + ng2-alfresco-documentlist \ + ng2-alfresco-login \ + ng2-alfresco-search \ + ng2-alfresco-upload \ + ng2-alfresco-viewer +do + DESTDIR=././../ng2-components/${PACKAGE} + echo "====== demo shell linking: ${PACKAGE} =====" + npm link ${PACKAGE} +done \ No newline at end of file diff --git a/scripts/npm-publish.sh b/scripts/npm-publish.sh new file mode 100755 index 0000000000..092da9dba5 --- /dev/null +++ b/scripts/npm-publish.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +for PACKAGE in \ + ng2-alfresco-core \ + ng2-alfresco-datatable \ + ng2-alfresco-documentlist \ + ng2-alfresco-login \ + ng2-alfresco-search \ + ng2-alfresco-upload \ + ng2-alfresco-viewer +do + DESTDIR=././../ng2-components/${PACKAGE} + echo "====== PUBLISHING: ${DESTDIR} =====" + npm publish ${DESTDIR} +done \ No newline at end of file diff --git a/scripts/update-version.sh b/scripts/update-version.sh new file mode 100755 index 0000000000..9bfbd8a8ac --- /dev/null +++ b/scripts/update-version.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -ex + +cd `dirname $0` + +VERSION=$1 + +if [[ "${VERSION}" == "" ]] +then + echo "Version number required" + exit 1 +fi + +echo "====== RENAMING 0.0.0-PLACEHOLDER to N.N.N version ======" +find ././../ng2-components/ -type f -name package.json -print0 | xargs -0 sed -i '' "s/0\\.0\\.0-PLACEHOLDER/${VERSION}/g" \ No newline at end of file