From f0590139b1175c2dbc8efc73ed15e34b75865d07 Mon Sep 17 00:00:00 2001 From: Harvey Kandola Date: Sat, 4 Mar 2017 17:33:43 +0000 Subject: [PATCH] jump to page --- app/app/components/document/document-view.js | 11 ++ app/app/pods/document/index/controller.js | 101 ------------------- app/app/pods/document/index/route.js | 6 +- app/app/pods/document/index/template.hbs | 5 +- app/app/pods/document/section/controller.js | 3 +- app/app/router.js | 6 -- 6 files changed, 20 insertions(+), 112 deletions(-) diff --git a/app/app/components/document/document-view.js b/app/app/components/document/document-view.js index 9d6a3563..464086b0 100644 --- a/app/app/components/document/document-view.js +++ b/app/app/components/document/document-view.js @@ -62,6 +62,16 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { // out $(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300}); } }); + + let jumpTo = this.get('pageId'); + if (is.not.empty(jumpTo)) { + let self = this; + $("#page-" + jumpTo).velocity("scroll", { duration: 250, offset: -100, complete: + function() { + self.set('pageId', ''); + } + }); + } }, willDestroyElement() { @@ -125,6 +135,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { model.page.sequence = sequence; this.send('onHideSectionWizard'); + this.set('pageId', ''); const promise = this.get('onInsertSection')(model); promise.then((id) => { diff --git a/app/app/pods/document/index/controller.js b/app/app/pods/document/index/controller.js index 2361d1cb..606888b2 100644 --- a/app/app/pods/document/index/controller.js +++ b/app/app/pods/document/index/controller.js @@ -16,36 +16,10 @@ export default Ember.Controller.extend(NotifierMixin, { documentService: Ember.inject.service('document'), templateService: Ember.inject.service('template'), sectionService: Ember.inject.service('section'), - page: null, folder: {}, pages: [], toggled: false, - // to test - // to test - // Jump to the right part of the document. - scrollToPage(pageId) { - Ember.run.schedule('afterRender', function () { - let dest; - let target = "#page-title-" + pageId; - let targetOffset = $(target).offset(); - - if (is.undefined(targetOffset)) { - return; - } - - dest = targetOffset.top > $(document).height() - $(window).height() ? $(document).height() - $(window).height() : targetOffset.top; - // small correction to ensure we also show page title - dest = dest > 50 ? dest - 74 : dest; - - $("html,body").animate({ - scrollTop: dest - }, 500, "linear"); - $(".toc-index-item").removeClass("selected"); - $("#index-" + pageId).addClass("selected"); - }); - }, - actions: { toggleSidebar() { this.set('toggled', !this.get('toggled')); @@ -218,15 +192,6 @@ export default Ember.Controller.extend(NotifierMixin, { }); }, - // to test - gotoPage(pageId) { - if (is.null(pageId)) { - return; - } - - this.scrollToPage(pageId); - }, - // to test onSavePageAsBlock(block) { this.get('sectionService').addBlock(block).then(() => { @@ -237,71 +202,6 @@ export default Ember.Controller.extend(NotifierMixin, { }); /* -gotoPage(pageId) { - if (is.null(pageId)) { - return; - } - - this.scrollToPage(pageId); -}, - - -onSaveTemplate(name, desc) { - this.get('templateService').saveAsTemplate(this.get('model.document.id'), name, desc).then(function () {}); -}, - -onSaveMeta(doc) { - this.get('documentService').save(doc).then(() => { - this.transitionToRoute('document.index'); - }); -}, - -onInsertBlock(block) { - this.audit.record("added-content-block-" + block.get('contentType')); - - let page = { - documentId: this.get('model.document.id'), - title: `${block.get('title')}`, - level: 1, - sequence: 0, - body: block.get('body'), - contentType: block.get('contentType'), - pageType: block.get('pageType'), - blockId: block.get('id') - }; - - let meta = { - documentId: this.get('model.document.id'), - rawBody: block.get('rawBody'), - config: block.get('config'), - externalSource: block.get('externalSource') - }; - - let model = { - page: page, - meta: meta - }; - - this.get('documentService').addPage(this.get('model.document.id'), model).then((newPage) => { - let data = this.get('store').normalize('page', newPage); - this.get('store').push(data); - - this.get('documentService').getPages(this.get('model.document.id')).then((pages) => { - this.set('model.pages', pages.filterBy('pageType', 'section')); - this.set('model.tabs', pages.filterBy('pageType', 'tab')); - - this.get('documentService').getPageMeta(this.get('model.document.id'), newPage.id).then(() => { - this.transitionToRoute('document.edit', - this.get('model.folder.id'), - this.get('model.folder.slug'), - this.get('model.document.id'), - this.get('model.document.slug'), - newPage.id); - }); - }); - }); -}, - onDeleteBlock(blockId) { this.get('sectionService').deleteBlock(blockId).then(() => { this.audit.record("deleted-block"); @@ -317,5 +217,4 @@ onDocumentDelete() { this.transitionToRoute('folder', this.get('model.folder.id'), this.get('model.folder.slug')); }); } - */ diff --git a/app/app/pods/document/index/route.js b/app/app/pods/document/index/route.js index ab1bf024..eb757ae3 100644 --- a/app/app/pods/document/index/route.js +++ b/app/app/pods/document/index/route.js @@ -18,13 +18,13 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { folderService: Ember.inject.service('folder'), userService: Ember.inject.service('user'), queryParams: { - page: { + pageId: { refreshModel: false } }, beforeModel(transition) { - this.set('pageId', is.not.undefined(transition.queryParams.page) ? transition.queryParams.page : ""); + this.set('pageId', is.not.undefined(transition.queryParams.pageId) ? transition.queryParams.pageId : ''); }, model() { @@ -36,7 +36,7 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { folders: this.modelFor('document').folders, folder: this.modelFor('document').folder, document: this.modelFor('document').document, - page: this.get('pageId'), + pageId: this.get('pageId'), isEditor: this.get('folderService').get('canEditCurrentFolder'), pages: this.modelFor('document').pages, links: this.modelFor('document').links, diff --git a/app/app/pods/document/index/template.hbs b/app/app/pods/document/index/template.hbs index d81065c8..2384fd79 100644 --- a/app/app/pods/document/index/template.hbs +++ b/app/app/pods/document/index/template.hbs @@ -64,7 +64,10 @@ {{document/document-heading document=model.document isEditor=model.isEditor onSaveDocument=(action 'onSaveDocument')}} {{document/document-view document=model.document links=model.links pages=model.pages - folder=model.folder folders=model.folders sections=model.sections isEditor=model.isEditor onSavePage=(action 'onSavePage') gotoPage=(action 'gotoPage') onInsertSection=(action 'onInsertSection') onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onPageDeleted') onEditSection=(action 'onEditSection')}} + folder=model.folder folders=model.folders sections=model.sections isEditor=model.isEditor pageId=pageId + onSavePage=(action 'onSavePage') onInsertSection=(action 'onInsertSection') + onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') + onDeletePage=(action 'onPageDeleted') onEditSection=(action 'onEditSection')}} diff --git a/app/app/pods/document/section/controller.js b/app/app/pods/document/section/controller.js index 64bcc8ba..ba85228b 100644 --- a/app/app/pods/document/section/controller.js +++ b/app/app/pods/document/section/controller.js @@ -43,7 +43,8 @@ export default Ember.Controller.extend(NotifierMixin, { this.get('model.folder.id'), this.get('model.folder.slug'), this.get('model.document.id'), - this.get('model.document.slug')); + this.get('model.document.slug'), + { queryParams: { pageId: page.id }}); }); }, } diff --git a/app/app/router.js b/app/app/router.js index 56f9303d..b4cbe4d0 100644 --- a/app/app/router.js +++ b/app/app/router.js @@ -41,12 +41,6 @@ export default Router.map(function () { this.route('section', { path: 'section/:page_id' }); - // this.route('edit', { - // path: 'edit/:page_id' - // }); - // this.route('wizard', { - // path: 'add' - // }); this.route('history', { path: 'history' });