Dataset Profile Editor. Table of contents numbering drag and drop fix. Fix issues in dragging as well.
This commit is contained in:
parent
427c04f631
commit
5e77f78a1c
|
@ -1,5 +1,5 @@
|
||||||
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
||||||
import { Inject } from '@angular/core';
|
import { ChangeDetectorRef, Inject, OnDestroy } from '@angular/core';
|
||||||
import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
|
import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
|
||||||
import { FormArray, FormGroup } from '@angular/forms';
|
import { FormArray, FormGroup } from '@angular/forms';
|
||||||
import { FieldEditorModel } from '@app/ui/admin/dataset-profile/admin/field-editor-model';
|
import { FieldEditorModel } from '@app/ui/admin/dataset-profile/admin/field-editor-model';
|
||||||
|
@ -18,7 +18,7 @@ import { ToCEntry, ToCEntryType } from '../../../table-of-contents/table-of-cont
|
||||||
styleUrls: ['./dataset-profile-editor-section-fieldset.component.scss']
|
styleUrls: ['./dataset-profile-editor-section-fieldset.component.scss']
|
||||||
})
|
})
|
||||||
|
|
||||||
export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent implements OnInit, OnChanges {
|
export class DatasetProfileEditorSectionFieldSetComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
// @Input() form: FormGroup;
|
// @Input() form: FormGroup;
|
||||||
//@Input() dataModel: SectionEditorModel;
|
//@Input() dataModel: SectionEditorModel;
|
||||||
// @Input() indexPath: string;
|
// @Input() indexPath: string;
|
||||||
|
@ -41,7 +41,6 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
private myElement: ElementRef
|
private myElement: ElementRef
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
super();
|
|
||||||
if(this.dragulaService.find(this.FIELDSETS)){
|
if(this.dragulaService.find(this.FIELDSETS)){
|
||||||
this.dragulaService.destroy(this.FIELDSETS);
|
this.dragulaService.destroy(this.FIELDSETS);
|
||||||
}
|
}
|
||||||
|
@ -70,10 +69,20 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
|
|
||||||
}
|
}
|
||||||
ngOnDestroy(){
|
ngOnDestroy(){
|
||||||
|
// console.log('elemement destroyed -->');
|
||||||
|
|
||||||
this.subs.unsubscribe();
|
this.subs.unsubscribe();
|
||||||
}
|
}
|
||||||
ngOnChanges(changes: SimpleChanges): void {
|
ngOnChanges(changes: SimpleChanges): void {
|
||||||
|
// console.log('---------element updated-------');
|
||||||
|
// console.log('numbering before:', this.numbering);
|
||||||
|
|
||||||
|
|
||||||
this.initialize();
|
this.initialize();
|
||||||
|
// console.log('----post update----');
|
||||||
|
// console.log('numbering now', this.numbering, ' changes detected:', changes);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,6 +122,8 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
if(numberingArray.length){
|
if(numberingArray.length){
|
||||||
numberingArray.splice(numberingArray.length-1);
|
numberingArray.splice(numberingArray.length-1);
|
||||||
this.numbering = numberingArray.join('.');
|
this.numbering = numberingArray.join('.');
|
||||||
|
}else{
|
||||||
|
// console.warn('!not found numbering');
|
||||||
}
|
}
|
||||||
this.selectedFieldSetId = this.tocentry.id;
|
this.selectedFieldSetId = this.tocentry.id;
|
||||||
|
|
||||||
|
@ -128,12 +139,18 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
|
|
||||||
if(el){
|
if(el){
|
||||||
|
|
||||||
|
/*
|
||||||
|
Give time to template to build itself (extending and collapsing).
|
||||||
|
In case we are dragging from one container to another, then the ui takes around 600ms to build
|
||||||
|
individual previews (dataset-profile-editor-field.component.ts);
|
||||||
|
|
||||||
|
*/
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const el = this.myElement.nativeElement.querySelector("#"+this.idprefix+id);
|
const el = this.myElement.nativeElement.querySelector("#"+this.idprefix+id);
|
||||||
if(el){
|
if(el){
|
||||||
el.scrollIntoView({behavior: "smooth"});
|
el.scrollIntoView({behavior: "smooth"});
|
||||||
}
|
}
|
||||||
}, 300);
|
}, 1100);
|
||||||
}else{
|
}else{
|
||||||
this._scrollOnTop();
|
this._scrollOnTop();
|
||||||
}
|
}
|
||||||
|
@ -150,7 +167,9 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
}
|
}
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
this.initialize();
|
// console.log('<-- element created');
|
||||||
|
// this.initialize();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
|
|
|
@ -198,7 +198,7 @@
|
||||||
(removeEntry)="onRemoveEntry($event)"
|
(removeEntry)="onRemoveEntry($event)"
|
||||||
[itemSelected]="selectedTocEntry"
|
[itemSelected]="selectedTocEntry"
|
||||||
[viewOnly]="viewOnly"
|
[viewOnly]="viewOnly"
|
||||||
(dataNeedsRefresh)="onDataNeedsRefresh()"
|
(dataNeedsRefresh)="onDataNeedsRefresh($event)"
|
||||||
[colorizeInvalid]="colorizeInvalid">
|
[colorizeInvalid]="colorizeInvalid">
|
||||||
</dataset-profile-table-of-contents>
|
</dataset-profile-table-of-contents>
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ import { SideNavService } from '@app/core/services/sidenav/side-nav.sevice';
|
||||||
import { EditorCustomValidators, EditorCustomValidatorsEnum } from './custom-validators/editor-custom-validators';
|
import { EditorCustomValidators, EditorCustomValidatorsEnum } from './custom-validators/editor-custom-validators';
|
||||||
import { CustomErrorValidator } from '@common/forms/validation/custom-validator';
|
import { CustomErrorValidator } from '@common/forms/validation/custom-validator';
|
||||||
import { STEPPER_ANIMATIONS } from './animations/animations';
|
import { STEPPER_ANIMATIONS } from './animations/animations';
|
||||||
|
|
||||||
|
|
||||||
const skipDisable: any[] = require('../../../../../assets/resources/skipDisable.json');
|
const skipDisable: any[] = require('../../../../../assets/resources/skipDisable.json');
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -556,18 +558,18 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
return this.toCEntries;
|
return this.toCEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateOrdinals(tocentries: ToCEntry[]){
|
// private updateOrdinals(tocentries: ToCEntry[]){
|
||||||
|
|
||||||
if(!tocentries || !tocentries.length) return;
|
// if(!tocentries || !tocentries.length) return;
|
||||||
tocentries.forEach((e,idx)=>{
|
// tocentries.forEach((e,idx)=>{
|
||||||
const ordinalControl = e.form.get('ordinal');
|
// const ordinalControl = e.form.get('ordinal');
|
||||||
if(ordinalControl){
|
// if(ordinalControl){
|
||||||
ordinalControl.setValue(idx);
|
// ordinalControl.setValue(idx);
|
||||||
ordinalControl.updateValueAndValidity();
|
// ordinalControl.updateValueAndValidity();
|
||||||
}
|
// }
|
||||||
this.updateOrdinals(e.subEntries);
|
// this.updateOrdinals(e.subEntries);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
//sort tocentries based on their ordinality
|
//sort tocentries based on their ordinality
|
||||||
private _sortToCentries(entries: ToCEntry[]){
|
private _sortToCentries(entries: ToCEntry[]){
|
||||||
|
@ -708,7 +710,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
private _findTocEntryById(id: string, tocentries: ToCEntry[]): ToCEntry{
|
private _findTocEntryById(id: string, tocentries: ToCEntry[]): ToCEntry{
|
||||||
if(!tocentries){
|
if(!tocentries || !tocentries.length){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1414,8 +1416,15 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
}
|
}
|
||||||
|
|
||||||
// previewForm:FormGroup;
|
// previewForm:FormGroup;
|
||||||
onDataNeedsRefresh(){
|
onDataNeedsRefresh(params?){
|
||||||
this.refreshToCEntries();
|
|
||||||
|
const tocentries = this.refreshToCEntries();
|
||||||
|
|
||||||
|
if(params && params.draggedItemId){
|
||||||
|
if(params.draggedItemId){
|
||||||
|
this.displayItem(this._findTocEntryById(params.draggedItemId, tocentries));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cloneFieldSet(fieldset: FormGroup){
|
cloneFieldSet(fieldset: FormGroup){
|
||||||
|
|
|
@ -22,3 +22,8 @@ export interface Foo {
|
||||||
childType: ToCEntryType,
|
childType: ToCEntryType,
|
||||||
parent: ToCEntry
|
parent: ToCEntry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface TableUpdateInfo{
|
||||||
|
draggedItemId?: string;
|
||||||
|
data?:any;
|
||||||
|
}
|
|
@ -5,11 +5,12 @@ import { interval, Subject, Subscription } from 'rxjs';
|
||||||
import { distinctUntilChanged } from 'rxjs/operators';
|
import { distinctUntilChanged } from 'rxjs/operators';
|
||||||
import { type } from 'os';
|
import { type } from 'os';
|
||||||
import { SimpleChanges } from '@angular/core';
|
import { SimpleChanges } from '@angular/core';
|
||||||
import { Foo, ToCEntry, ToCEntryType } from './table-of-contents-entry';
|
import { Foo, TableUpdateInfo, ToCEntry, ToCEntryType } from './table-of-contents-entry';
|
||||||
import { DragulaService } from 'ng2-dragula';
|
import { DragulaService } from 'ng2-dragula';
|
||||||
import { FormArray } from '@angular/forms';
|
import { FormArray } from '@angular/forms';
|
||||||
import { MatSnackBar, MatSnackBarConfig } from '@angular/material';
|
import { MatSnackBar, MatSnackBarConfig } from '@angular/material';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { ContentObserver } from '@angular/cdk/observers';
|
||||||
|
|
||||||
export interface Link {
|
export interface Link {
|
||||||
/* id of the section*/
|
/* id of the section*/
|
||||||
|
@ -44,7 +45,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
@Output() createEntry = new EventEmitter<Foo>();//TODO
|
@Output() createEntry = new EventEmitter<Foo>();//TODO
|
||||||
|
|
||||||
@Output() dataNeedsRefresh = new EventEmitter<void>();
|
@Output() dataNeedsRefresh = new EventEmitter<TableUpdateInfo>();
|
||||||
|
|
||||||
@Input() itemSelected: ToCEntry;
|
@Input() itemSelected: ToCEntry;
|
||||||
@Input() colorizeInvalid: boolean = false;
|
@Input() colorizeInvalid: boolean = false;
|
||||||
|
@ -96,8 +97,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
const timeNow = new Date().getTime();
|
const timeNow = new Date().getTime();
|
||||||
|
|
||||||
if(timeNow - this._dragStartedAt> 600){
|
if(timeNow - this._dragStartedAt> 600){
|
||||||
console.log('timenow: ', timeNow);
|
// console.log('timenow: ', timeNow);
|
||||||
console.log('timestarted', this._dragStartedAt);
|
// console.log('timestarted', this._dragStartedAt);
|
||||||
this._dragStartedAt = null;
|
this._dragStartedAt = null;
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
@ -135,7 +136,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
switch(element.type){
|
switch(element.type){
|
||||||
case ToCEntryType.FieldSet:
|
case ToCEntryType.FieldSet:{
|
||||||
if(targetContainer.type != this.tocEntryType.Section){
|
if(targetContainer.type != this.tocEntryType.Section){
|
||||||
// const message = 'Fieldset can only be child of Subsections';
|
// const message = 'Fieldset can only be child of Subsections';
|
||||||
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.FIELDSET-MUST-HAVE-PARENT-SECTION');
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.FIELDSET-MUST-HAVE-PARENT-SECTION');
|
||||||
|
@ -179,11 +180,12 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
sourceFieldsets.controls.forEach(control=>{
|
sourceFieldsets.controls.forEach(control=>{
|
||||||
const ordinal = control.get('ordinal');
|
const ordinal = control.get('ordinal');
|
||||||
if(ordinal.value>= sourceOrdinal){
|
if((ordinal.value>= sourceOrdinal) && sourceOrdinal>0){
|
||||||
const updatedOrdinalVal = ordinal.value -1;
|
const updatedOrdinalVal = ordinal.value -1;
|
||||||
ordinal.setValue(updatedOrdinalVal);
|
ordinal.setValue(updatedOrdinalVal);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
sourceFieldsets.controls.sort(this._compareOrdinals);
|
||||||
}
|
}
|
||||||
|
|
||||||
let position:number = targetFieldsets.length;
|
let position:number = targetFieldsets.length;
|
||||||
|
@ -201,7 +203,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if(siblingIndex>=0 && (position!=targetFieldsets.length)){
|
if(siblingIndex>=0){ //sibling found
|
||||||
|
|
||||||
targetFieldsets.controls.filter(control=> control.get('ordinal').value >= position).forEach(control=>{
|
targetFieldsets.controls.filter(control=> control.get('ordinal').value >= position).forEach(control=>{
|
||||||
const ordinal = control.get('ordinal');
|
const ordinal = control.get('ordinal');
|
||||||
|
@ -215,11 +217,12 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
fieldsetForm.get('ordinal').setValue(position);
|
fieldsetForm.get('ordinal').setValue(position);
|
||||||
targetFieldsets.insert(position,fieldsetForm);
|
targetFieldsets.insert(position,fieldsetForm);
|
||||||
|
targetFieldsets.controls.sort(this._compareOrdinals);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit({draggedItemId: elementId});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ToCEntryType.Section:
|
}
|
||||||
|
case ToCEntryType.Section:{
|
||||||
|
|
||||||
if(targetContainer.type == ToCEntryType.Section){
|
if(targetContainer.type == ToCEntryType.Section){
|
||||||
if((targetContainer.form.get('fieldSets')as FormArray).length){
|
if((targetContainer.form.get('fieldSets')as FormArray).length){
|
||||||
|
@ -256,7 +259,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
sourceSections.controls.filter(control=>control.get('ordinal').value >= elementSectionForm.get('ordinal').value).forEach(control=>{
|
sourceSections.controls.filter(control=>control.get('ordinal').value >= elementSectionForm.get('ordinal').value).forEach(control=>{
|
||||||
const ordinal = control.get('ordinal');
|
const ordinal = control.get('ordinal');
|
||||||
const updatedOrdinalVal = ordinal.value -1;
|
const updatedOrdinalVal = ordinal.value? ordinal.value -1: 0;
|
||||||
ordinal.setValue(updatedOrdinalVal);
|
ordinal.setValue(updatedOrdinalVal);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -274,14 +277,14 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if(targetOrdinal!=targetSections.length){
|
// if(targetOrdinal!=targetSections.length){//mporei na einai idio
|
||||||
// section.get('ordinal').setValue(i+1);
|
// section.get('ordinal').setValue(i+1);
|
||||||
targetSections.controls.filter(control=> control.get('ordinal').value>=targetOrdinal).forEach(control=>{
|
targetSections.controls.filter(control=> control.get('ordinal').value>=targetOrdinal).forEach(control=>{
|
||||||
const ordinal = control.get('ordinal');
|
const ordinal = control.get('ordinal');
|
||||||
const updatedOrdinalVal = ordinal.value+1;
|
const updatedOrdinalVal = ordinal.value+1;
|
||||||
ordinal.setValue(updatedOrdinalVal);
|
ordinal.setValue(updatedOrdinalVal);
|
||||||
});
|
});
|
||||||
}
|
// }
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
console.info('no siblings found');
|
console.info('no siblings found');
|
||||||
|
@ -290,7 +293,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
targetSections.insert(targetOrdinal, elementSectionForm);
|
targetSections.insert(targetOrdinal, elementSectionForm);
|
||||||
|
|
||||||
}else if(targetContainer.type === ToCEntryType.Page){
|
}else if(targetContainer.type === ToCEntryType.Page){
|
||||||
const pageId = targetContainer.form.get('id').value;
|
// const pageId = targetContainer.form.get('id').value;
|
||||||
|
|
||||||
const rootform = targetContainer.form.root;
|
const rootform = targetContainer.form.root;
|
||||||
const sectionForm = element.form;
|
const sectionForm = element.form;
|
||||||
|
@ -313,7 +316,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
//update parent sections ordinal
|
//update parent sections ordinal
|
||||||
parentSections.controls.filter(section=>section.get('ordinal').value >= sectionForm.get('ordinal').value).forEach(section=>{
|
parentSections.controls.filter(section=>section.get('ordinal').value >= sectionForm.get('ordinal').value).forEach(section=>{
|
||||||
const ordinal = section.get('ordinal');
|
const ordinal = section.get('ordinal');
|
||||||
const updatedOrdinalVal = ordinal.value -1;
|
const updatedOrdinalVal = ordinal.value?ordinal.value -1: 0;
|
||||||
ordinal.setValue(updatedOrdinalVal);
|
ordinal.setValue(updatedOrdinalVal);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -333,13 +336,13 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
const siblingId= sibling.id.replace(this.DRAGULA_ITEM_ID_PREFIX, '');
|
const siblingId= sibling.id.replace(this.DRAGULA_ITEM_ID_PREFIX, '');
|
||||||
let indx = -1;
|
let indx = -1;
|
||||||
|
|
||||||
targetContainer.subEntries.forEach((e,i)=>{//TOOD TO CHECK IF ORDINAL AND INDEX IS THE SAME
|
targetContainer.subEntries.forEach((e,i)=>{
|
||||||
if(e.form.get('id').value === siblingId){
|
if(e.form.get('id').value === siblingId){
|
||||||
indx = i;
|
indx = i;
|
||||||
position = e.form.get('ordinal').value;
|
position = e.form.get('ordinal').value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(indx>=0 && position !=targetContainer.subEntries.length) {
|
if(indx>=0) {
|
||||||
|
|
||||||
// e.form.get('ordinal').setValue(i+1);
|
// e.form.get('ordinal').setValue(i+1);
|
||||||
targetContainer.subEntries.filter(e=>e.form.get('ordinal').value >= position).forEach(e=>{
|
targetContainer.subEntries.filter(e=>e.form.get('ordinal').value >= position).forEach(e=>{
|
||||||
|
@ -368,9 +371,10 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit({draggedItemId: elementId});
|
||||||
break;
|
break;
|
||||||
case ToCEntryType.Page:
|
}
|
||||||
|
case ToCEntryType.Page:{
|
||||||
if(targetId != this.ROOT_ID){
|
if(targetId != this.ROOT_ID){
|
||||||
// const message = 'A page element can only be at top level';
|
// const message = 'A page element can only be at top level';
|
||||||
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.PAGE-ELEMENT-ONLY-TOP-LEVEL');
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.PAGE-ELEMENT-ONLY-TOP-LEVEL');
|
||||||
|
@ -407,9 +411,9 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
//ordinality
|
//ordinality
|
||||||
pages.controls.filter(page=> page.get('ordinal').value> pageForm.get('ordinal').value).forEach(page=>{
|
pages.controls.filter(page=> page.get('ordinal').value>= pageForm.get('ordinal').value).forEach(page=>{
|
||||||
const ordinal = page.get('ordinal');
|
const ordinal = page.get('ordinal');
|
||||||
const ordinalVal = ordinal.value - 1;
|
const ordinalVal = ordinal.value? ordinal.value - 1: 0;
|
||||||
ordinal.setValue(ordinalVal);
|
ordinal.setValue(ordinalVal);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -437,9 +441,9 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
pages.insert(targetPosition, pageForm);
|
pages.insert(targetPosition, pageForm);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit({draggedItemId:elementId});
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
|
|
||||||
console.error('Could not support moving objects for specific type of element');
|
console.error('Could not support moving objects for specific type of element');
|
||||||
|
@ -464,18 +468,9 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
drake.on('dragend',(el)=>{
|
drake.on('dragend',(el)=>{
|
||||||
const draggingItem = this.draggingItemId;
|
|
||||||
this.isDragging = false;
|
this.isDragging = false;
|
||||||
this.draggingItemId = null;
|
this.draggingItemId = null;
|
||||||
this.overcontainer = null;
|
this.overcontainer = null;
|
||||||
|
|
||||||
|
|
||||||
const entry = this._findTocEntryById(draggingItem, this.links);
|
|
||||||
|
|
||||||
if(entry){
|
|
||||||
this.itemClicked(entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -554,6 +549,14 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
duration:2000
|
duration:2000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _compareOrdinals(a, b){
|
||||||
|
|
||||||
|
const aValue = a.get('ordinal').value as number;
|
||||||
|
const bValue = b.get('ordinal').value as number;
|
||||||
|
|
||||||
|
// if(!aValue || !bValue) return 0;
|
||||||
|
return aValue - bValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue