1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-25 16:19:46 +02:00

Saving wip on toc refactor

This commit is contained in:
zinyando 2016-08-30 21:22:34 +02:00
parent 833c462872
commit 899281044e
3 changed files with 82 additions and 82 deletions

View file

@ -1,64 +1,64 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
// //
// This software (Documize Community Edition) is licensed under // This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
import Ember from 'ember'; import Ember from 'ember';
export default Ember.Component.extend({ export default Ember.Component.extend({
document: {}, document: {},
meta: [], meta: [],
pages: [], pages: [],
didReceiveAttrs() { didReceiveAttrs() {
let editors = this.get('meta.editors'); let editors = this.get('meta.editors');
let toc = this.get('pages'); let toc = this.get('pages');
if (is.null(editors)) { if (is.null(editors)) {
return; return;
} }
editors.forEach(function(item) { editors.forEach(function (item) {
Ember.set(item, "added", item.action === "add-page"); Ember.set(item, "added", item.action === "add-page");
Ember.set(item, "changed", item.action === "update-page"); Ember.set(item, "changed", item.action === "update-page");
Ember.set(item, "deleted", item.action === "remove-page"); Ember.set(item, "deleted", item.action === "remove-page");
let page = _.findWhere(toc, { let page = _.findWhere(toc, {
id: item.pageId id: item.pageId
}); });
let title = ""; let title = "";
if (is.not.undefined(page)) { if (is.not.undefined(page)) {
title = page.title; title = page.get('title');
if (item.added) { if (item.added) {
Ember.set(item, 'changeLabel', "added " + title); Ember.set(item, 'changeLabel', "added " + title);
} }
if (item.changed) { if (item.changed) {
Ember.set(item, 'changeLabel', "changed " + title); Ember.set(item, 'changeLabel', "changed " + title);
} }
} else { } else {
Ember.set(item, "deleted", true); Ember.set(item, "deleted", true);
if (item.added) { if (item.added) {
Ember.set(item, 'changeLabel', "added section (since removed)"); Ember.set(item, 'changeLabel', "added section (since removed)");
} }
if (item.changed) { if (item.changed) {
Ember.set(item, 'changeLabel', "changed section (since removed)"); Ember.set(item, 'changeLabel', "changed section (since removed)");
} }
if (item.deleted) { if (item.deleted) {
Ember.set(item, 'changeLabel', "removed section"); Ember.set(item, 'changeLabel', "removed section");
} }
} }
}); });
} }
}); });

View file

@ -1,11 +1,11 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved. // Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
// //
// This software (Documize Community Edition) is licensed under // This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html // GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
// //
// You can operate outside the AGPL restrictions by purchasing // You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license // Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>. // by contacting <sales@documize.com>.
// //
// https://documize.com // https://documize.com
@ -79,7 +79,7 @@ export default Ember.Controller.extend(NotifierMixin, {
} }
}); });
self.set('pages', _.sortBy(self.get('pages'), "sequence")); self.set('pages', self.get('pages').sortBy('sequence'));
}); });
}, },
@ -98,7 +98,7 @@ export default Ember.Controller.extend(NotifierMixin, {
}); });
let pages = self.get('pages'); let pages = self.get('pages');
pages = _.sortBy(pages, "sequence"); pages = pages.sortBy('sequence')
self.set('pages', []); self.set('pages', []);
self.set('pages', pages); self.set('pages', pages);
}); });
@ -216,4 +216,4 @@ export default Ember.Controller.extend(NotifierMixin, {
}); });
} }
} }
}); });

View file

@ -12,17 +12,17 @@
function getState(toc, page) { function getState(toc, page) {
let state = { let state = {
tocTools: { tocTools: {
upTarget: "", upTarget: "",
downTarget: "", downTarget: "",
indentIncrement: 0, indentIncrement: 0,
allowIndent: false, allowIndent: false,
allowOutdent: false allowOutdent: false
}, },
actionablePage: false, actionablePage: false,
upDisabled: true, upDisabled: true,
downDisabled: true, downDisabled: true,
indentDisabled: true, indentDisabled: true,
outdentDisabled: true, outdentDisabled: true,
}; };
if (is.undefined(page)) { if (is.undefined(page)) {
@ -55,19 +55,19 @@ function getState(toc, page) {
if (index2 !== -1) { if (index2 !== -1) {
// up // up
for (var i = index2; i >= 0; i--) { for (var i = index2; i >= 0; i--) {
if (page.level > toc[i].level) { if (page.get('level') > toc[i].get('level')) {
break; break;
} }
if (page.level === toc[i].level) { if (page.get('level') === toc[i].get('level')) {
state.tocTools.upTarget = toc[i].id; state.tocTools.upTarget = toc[i].id;
break; break;
} }
} }
// indent? // indent?
state.tocTools.allowIndent = upPage.level >= page.level; state.tocTools.allowIndent = upPage.get('level') >= page.get('level');
state.tocTools.indentIncrement = upPage.level - page.level; state.tocTools.indentIncrement = upPage.get('level') - page.get('level');
if (state.tocTools.indentIncrement === 0) { if (state.tocTools.indentIncrement === 0) {
state.tocTools.indentIncrement = 1; state.tocTools.indentIncrement = 1;
@ -115,7 +115,7 @@ function getState(toc, page) {
state.upDisabled = state.tocTools.upTarget === ''; state.upDisabled = state.tocTools.upTarget === '';
state.downDisabled = state.tocTools.downTarget === ''; state.downDisabled = state.tocTools.downTarget === '';
state.indentDisabled = !state.tocTools.allowIndent; state.indentDisabled = !state.tocTools.allowIndent;
state.outdentDisabled = !state.tocTools.allowOutdent; state.outdentDisabled = !state.tocTools.allowOutdent;
state.actionablePage = is.not.empty(state.tocTools.upTarget) || state.actionablePage = is.not.empty(state.tocTools.upTarget) ||
@ -141,8 +141,8 @@ function moveUp(state, pages, current) {
page2 = pages[index1 - 1]; page2 = pages[index1 - 1];
} }
var sequence1 = page1.sequence; var sequence1 = page1.get('sequence');
var sequence2 = is.not.null(page2) && is.not.undefined(page2) ? page2.sequence : 0; var sequence2 = is.not.null(page2) && is.not.undefined(page2) ? page2.get('sequence') : 0;
var index = _.indexOf(pages, current, false); var index = _.indexOf(pages, current, false);
if (index !== -1) { if (index !== -1) {
@ -154,11 +154,11 @@ function moveUp(state, pages, current) {
}); });
for (var i = index + 1; i < pages.length; i++) { for (var i = index + 1; i < pages.length; i++) {
if (pages[i].level <= current.level) { if (pages[i].get('level') <= current.get('level')) {
break; break;
} }
sequence = (sequence + page1.sequence) / 2; sequence = (sequence + page1.get('sequence')) / 2;
pendingChanges.push({ pendingChanges.push({
pageId: pages[i].id, pageId: pages[i].id,
@ -184,28 +184,28 @@ function moveDown(state, pages, current) {
var startingSequence = 0; var startingSequence = 0;
var upperSequence = 0; var upperSequence = 0;
var cutOff = _.rest(pages, downTargetIndex); var cutOff = _.rest(pages, downTargetIndex);
var siblings = _.reject(cutOff, function(p) { var siblings = _.reject(cutOff, function (p) {
return p.level !== current.level || p.id === current.id || p.id === downTarget.id; return p.get('level') !== current.get('level') || p.id === current.id || p.id === downTarget.id;
}); });
if (siblings.length > 0) { if (siblings.length > 0) {
var aboveThisGuy = siblings[0]; var aboveThisGuy = siblings[0];
var belowThisGuy = pages[_.indexOf(pages, aboveThisGuy, false) - 1]; var belowThisGuy = pages[_.indexOf(pages, aboveThisGuy, false) - 1];
if (is.not.null(belowThisGuy) && belowThisGuy.level > current.level) { if (is.not.null(belowThisGuy) && belowThisGuy.get('level') > current.get('level')) {
startingSequence = (aboveThisGuy.sequence + belowThisGuy.sequence) / 2; startingSequence = (aboveThisGuy.get('sequence') + belowThisGuy.get('sequence')) / 2;
upperSequence = aboveThisGuy.sequence; upperSequence = aboveThisGuy.get('sequence');
} else { } else {
var otherGuy = pages[downTargetIndex + 1]; var otherGuy = pages[downTargetIndex + 1];
startingSequence = (otherGuy.sequence + downTarget.sequence) / 2; startingSequence = (otherGuy.get('sequence') + downTarget.get('sequence')) / 2;
upperSequence = otherGuy.sequence; upperSequence = otherGuy.get('sequence');
} }
} else { } else {
// startingSequence = downTarget.sequence * 2; // startingSequence = downTarget.sequence * 2;
startingSequence = cutOff[cutOff.length-1].sequence * 2; startingSequence = cutOff[cutOff.length - 1].sequence * 2;
upperSequence = startingSequence * 2; upperSequence = startingSequence * 2;
} }
pendingChanges.push({ pendingChanges.push({
pageId: current.id, pageId: current.id,
@ -215,7 +215,7 @@ function moveDown(state, pages, current) {
var sequence = (startingSequence + upperSequence) / 2; var sequence = (startingSequence + upperSequence) / 2;
for (var i = pageIndex + 1; i < pages.length; i++) { for (var i = pageIndex + 1; i < pages.length; i++) {
if (pages[i].level <= current.level) { if (pages[i].get('level') <= current.get('level')) {
break; break;
} }
@ -237,17 +237,17 @@ function indent(state, pages, current) {
pendingChanges.push({ pendingChanges.push({
pageId: current.id, pageId: current.id,
level: current.level + state.tocTools.indentIncrement level: current.get('level') + state.tocTools.indentIncrement
}); });
for (var i = pageIndex + 1; i < pages.length; i++) { for (var i = pageIndex + 1; i < pages.length; i++) {
if (pages[i].level <= current.level) { if (pages[i].get('level') <= current.get('level')) {
break; break;
} }
pendingChanges.push({ pendingChanges.push({
pageId: pages[i].id, pageId: pages[i].id,
level: pages[i].level + state.tocTools.indentIncrement level: pages[i].get('level') + state.tocTools.indentIncrement
}); });
} }
@ -260,17 +260,17 @@ function outdent(state, pages, current) {
pendingChanges.push({ pendingChanges.push({
pageId: current.id, pageId: current.id,
level: current.level - 1 level: current.get('level') - 1
}); });
for (var i = pageIndex + 1; i < pages.length; i++) { for (var i = pageIndex + 1; i < pages.length; i++) {
if (pages[i].level <= current.level) { if (pages[i].get('level') <= current.get('level')) {
break; break;
} }
pendingChanges.push({ pendingChanges.push({
pageId: pages[i].id, pageId: pages[i].id,
level: pages[i].level - 1 level: pages[i].get('level') - 1
}); });
} }