fixes after commit & project table

This commit is contained in:
annampak 2017-11-01 12:15:36 +02:00
commit 5c0309e232
16 changed files with 176 additions and 29 deletions

View File

@ -25,7 +25,8 @@
"scripts": [ "scripts": [
"./../node_modules/jquery/dist/jquery.min.js", "./../node_modules/jquery/dist/jquery.min.js",
"./../node_modules/bootstrap/dist/js/bootstrap.min.js", "./../node_modules/bootstrap/dist/js/bootstrap.min.js",
"./assets/xml2json.min.js" "./assets/xml2json.min.js",
"./assets/jquery.scrollTo.min.js"
], ],
"environmentSource": "environments/environment.ts", "environmentSource": "environments/environment.ts",
"environments": { "environments": {

View File

@ -248,9 +248,9 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "6.0.88", "version": "6.0.90",
"resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz",
"integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==" "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA=="
}, },
"@types/q": { "@types/q": {
"version": "0.0.32", "version": "0.0.32",
@ -589,6 +589,11 @@
"lodash": "4.17.4" "lodash": "4.17.4"
} }
}, },
"angular2-draggable": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/angular2-draggable/-/angular2-draggable-1.0.7.tgz",
"integrity": "sha1-NeH4HIzPPdljDyMmVYuILMEvDyk="
},
"ansi-escapes": { "ansi-escapes": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz",
@ -3182,6 +3187,14 @@
"pinkie-promise": "2.0.1" "pinkie-promise": "2.0.1"
} }
}, },
"flat": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/flat/-/flat-4.0.0.tgz",
"integrity": "sha512-ji/WMv2jdsE+LaznpkIF9Haax0sdpTBozrz/Dtg4qSRMfbs8oVg4ypJunIRYPiMLvH/ed6OflXbnbTIKJhtgeg==",
"requires": {
"is-buffer": "1.1.5"
}
},
"flatten": { "flatten": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
@ -4103,8 +4116,7 @@
"is-buffer": { "is-buffer": {
"version": "1.1.5", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
"integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw="
"dev": true
}, },
"is-builtin-module": { "is-builtin-module": {
"version": "1.0.0", "version": "1.0.0",
@ -5941,7 +5953,7 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz",
"integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=",
"requires": { "requires": {
"@types/node": "6.0.88" "@types/node": "6.0.90"
} }
}, },
"parsejson": { "parsejson": {
@ -6677,7 +6689,7 @@
"integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/node": "6.0.88", "@types/node": "6.0.90",
"@types/q": "0.0.32", "@types/q": "0.0.32",
"@types/selenium-webdriver": "2.53.42", "@types/selenium-webdriver": "2.53.42",
"blocking-proxy": "0.0.5", "blocking-proxy": "0.0.5",

View File

@ -24,9 +24,11 @@
"angular-2-data-table": "^0.1.2", "angular-2-data-table": "^0.1.2",
"angular-4-data-table-bootstrap-4": "^0.2.0", "angular-4-data-table-bootstrap-4": "^0.2.0",
"angular-google-signin": "^0.1.5", "angular-google-signin": "^0.1.5",
"angular2-draggable": "^1.0.7",
"angular2-datatable": "^0.6.0", "angular2-datatable": "^0.6.0",
"bootstrap": "^3.3.7", "bootstrap": "^3.3.7",
"core-js": "^2.4.1", "core-js": "^2.4.1",
"flat": "^4.0.0",
"jquery": "^3.2.1", "jquery": "^3.2.1",
"ngx-webstorage": "^1.8.0", "ngx-webstorage": "^1.8.0",
"rxjs": "^5.4.2", "rxjs": "^5.4.2",
@ -38,7 +40,7 @@
"@angular/language-service": "^4.3.6", "@angular/language-service": "^4.3.6",
"@types/jasmine": "~2.5.53", "@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2", "@types/jasminewd2": "~2.0.2",
"@types/node": "^6.0.88", "@types/node": "^6.0.90",
"angular-ide": "^0.9.31", "angular-ide": "^0.9.31",
"codelyzer": "~3.1.1", "codelyzer": "~3.1.1",
"jasmine-core": "~2.6.2", "jasmine-core": "~2.6.2",

View File

@ -31,6 +31,8 @@ import { GlobalInterceptor } from './services/interceptor';
import { DatasetsModule } from './datasets/dataset.module'; import { DatasetsModule } from './datasets/dataset.module';
import { DmpModule } from './dmps/dmp.module'; import { DmpModule } from './dmps/dmp.module';
import { TabModule } from './tabs/tab.module'; import { TabModule } from './tabs/tab.module';
import { AngularDraggableModule } from 'angular2-draggable';
import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { HTTP_INTERCEPTORS } from '@angular/common/http';
@ -56,11 +58,11 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http';
DmpModule, DmpModule,
DatasetsModule, DatasetsModule,
AppRoutingModule, AppRoutingModule,
AngularDraggableModule,
DataTableModule DataTableModule
], ],
providers: [ providers: [{
{
provide: HTTP_INTERCEPTORS, provide: HTTP_INTERCEPTORS,
useClass: GlobalInterceptor, useClass: GlobalInterceptor,
multi: true, multi: true,

View File

@ -36,17 +36,36 @@
<p>Form value: {{ form.value | json }}</p> <p>Form value: {{ form.value | json }}</p>
</div> </div>
<div class="col-md-4">
<div ngDraggable style="position:fixed; top:60;">
<div class="panel panel-default" >
<div class="panel-heading" data-toggle="collapse" href="#collapse-panel">
<h4>Table of contents:</h4>
</div>
<div class="panel-body" id="collapse-panel" class="panel-collapse">
<div *ngIf="dataModel.groups.length">
<toc [dataModel]="dataModel"></toc>
</div>
</div>
</div>
</div>
</div>
<!--
<div class="col-md-4"> <div class="col-md-4">
<h4>On this page:</h4> <h4>On this page:</h4>
<div *ngIf="dataModel.groups.length"> <div *ngIf="dataModel.groups.length">
<toc [dataModel]="dataModel"></toc> <toc [dataModel]="dataModel"></toc>
</div> </div>
</div> </div>
-->
</div> </div>
<div class="text-center"> <div class="text-center">
<!-- pagination --> <!-- pagination -->
<ul *ngIf="pagination.pages && pagination.pages.length" class="pagination"> <ul *ngIf="pagination.pages && pagination.pages.length" class="pagination">

View File

@ -13,9 +13,22 @@ import { GroupBase } from './dynamic-form-group/group-base';
import { PaginationService } from '../../app/services/pagination.service'; import { PaginationService } from '../../app/services/pagination.service';
import { TokenService, TokenProvider } from '../services/token.service'; import { TokenService, TokenProvider } from '../services/token.service';
import { AngularDraggableModule } from 'angular2-draggable';
import './../../assets/xml2json.min.js'; import './../../assets/xml2json.min.js';
declare var X2JS: any; declare var X2JS: any;
var flatten = require('flat');
import * as $ from '../../../node_modules/jquery/dist/jquery'
import * as scroll from '../../assets/jquery.scrollTo.min.js';
@Component({ @Component({
selector: 'dynamic-form', selector: 'dynamic-form',
templateUrl: './dynamic-form.component.html', templateUrl: './dynamic-form.component.html',
@ -31,11 +44,14 @@ export class DynamicFormComponent implements OnInit {
@Input() pagination: any = {}; @Input() pagination: any = {};
id:string; id:string;
datasetId:string; datasetId:string;
datasetProperties:string; //datasetProperties:string;
private fragment: string; private fragment: string;
xml2jsonOBJ: any; xml2jsonOBJ: any;
constructor(private qcs: FieldControlService, private serverService: ServerService, private dataModelService: dataModelBuilder, private router: Router, constructor(private qcs: FieldControlService, private serverService: ServerService, private dataModelService: dataModelBuilder, private router: Router,
private route: ActivatedRoute, private pagerService: PaginationService, private tokenService : TokenService) { private route: ActivatedRoute, private pagerService: PaginationService, private tokenService : TokenService) {
this.form = this.qcs.toFormGroup(new Array(), new Array()); this.form = this.qcs.toFormGroup(new Array(), new Array());
@ -57,10 +73,10 @@ export class DynamicFormComponent implements OnInit {
let sub = this.route.params.subscribe(params => { let sub = this.route.params.subscribe(params => {
this.id = params.id; this.id = params.id;
this.datasetId = params.datasetId; this.datasetId = params.datasetId;
this.datasetProperties = params.datasetProperties //this.datasetProperties = params.datasetProperties
}); });
this.serverService.getDatsetsProfile(this.id).subscribe( this.serverService.getDatasetProfileByID(this.id).subscribe(
response => { response => {
@ -132,8 +148,53 @@ export class DynamicFormComponent implements OnInit {
} }
); );
this.serverService.getDatasetByID(this.datasetId).subscribe(
(data) => {
if(data.properties){
console.log("Found already submitted form, loading that one!");
//console.log(data.properties)
//console.log(JSON.parse(data.properties))
let formValues = JSON.parse(data.properties);
var flatList = flatten(formValues);
this.patchForm(flatList);
}
},
(err) => {
});
} }
scrollToElemID(elemID){
scroll("#"+elemID);
}
private patchForm(flatList : any){
for (var prop in flatList) {
if (flatList.hasOwnProperty(prop)) {
if(prop.endsWith('.id')||prop.endsWith('.answer')||prop.endsWith('.value')) continue;
//console.log("updating value of "+prop +" to "+flatList[prop].valueOf())
this.form.get(prop).setValue(flatList[prop].valueOf());
}
}
//this.form.get("namingConventionGroup.nonamingConventionA213").setValue("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT");
}
ngAfterViewChecked(): void { //navigate to certain section of the page ngAfterViewChecked(): void { //navigate to certain section of the page
try { try {
document.querySelector('#' + this.fragment).scrollIntoView(); document.querySelector('#' + this.fragment).scrollIntoView();
@ -141,6 +202,30 @@ export class DynamicFormComponent implements OnInit {
} }
onSubmit() { onSubmit() {
this.serverService.getDatasetByID(this.datasetId).subscribe(
(data) => {
//is xml, so transform them to xml (it's json)
//data.properties = this.xml2jsonOBJ.json2xml_str(JSON.stringify(this.form.value));
data.properties = JSON.stringify(this.form.value);
this.serverService.setDataset(data).subscribe( (data) => {
console.log("Updated dataset");
//VALE EDW NA SE PIGAINEI PISW KAI NA SOU VGAZEI ENA MHNYMA SUCCESS... (to success tha to valw egw an thes)
},
(err) => {
});
},
(err) => {
});
this.payLoad = JSON.stringify(this.form.value); this.payLoad = JSON.stringify(this.form.value);
} }

View File

@ -4,15 +4,16 @@
<li class="nav-item"> <li class="nav-item">
<div *ngFor="let group of dataModel.groups"> <!-- All contents in the first page --> <div *ngFor="let group of dataModel.groups"> <!-- All contents in the first page -->
<ul> <ul>
<li><a class="nav-link" [routerLink]="['.']" fragment="{{group.key}}">{{group.title}}</a> <li>
<ul *ngFor="let field of group.groupFields"> <a (click)='scrollToElemID(group.key)'>{{group.title}}</a>
<li *ngIf="field.visible == 'true'"> <ul *ngFor="let field of group.groupFields">
<a class="nav-link" [routerLink]="['.']" fragment="{{field.key}}">{{field.label}}</a> <li *ngIf="field.visible == 'true'">
</li> <a (click)='scrollToElemID(field.key)'>{{field.label}}</a>
</ul> </li>
</li> </ul>
</li>
</ul>
</ul>
</div> </div>

View File

@ -1,12 +1,17 @@
import { Component, OnInit, Input } from '@angular/core'; import { Component, OnInit, Input } from '@angular/core';
import { DataModel } from '../../entities/DataModel'; import { DataModel } from '../../entities/DataModel';
//import * as $ from '../../../../node_modules/jquery/dist/jquery'
import * as scroll from '../../../assets/jquery.scrollTo.min.js';
@Component({ @Component({
selector: 'toc', selector: 'toc',
templateUrl: '/toc.component.html', templateUrl: '/toc.component.html',
providers: [] providers: []
}) })
export class TocComponent implements OnInit{ export class TocComponent implements OnInit{
@Input() dataModel: DataModel; @Input() dataModel: DataModel;
private headers = new Array(); private headers = new Array();
@ -18,4 +23,9 @@ export class TocComponent implements OnInit{
} }
scrollToElemID(elemID){
console.log("going to id:"+elemID)
scroll("#"+elemID);
}
} }

View File

@ -97,7 +97,8 @@ export class ModalComponent implements OnInit {
this.show = false; this.show = false;
} }
showDatasets(dmpId, event) { showDatasets(dmpId, event) {
debugger;
this.dataSetVisibe = true; this.dataSetVisibe = true;
$("#exampleModalDmps").modal("hide"); $("#exampleModalDmps").modal("hide");
this.show = false; this.show = false;

View File

@ -1,7 +1,7 @@
<meta name="google-signin-client_id" content="524432312250-vhgidft856v8qftsc81kls4c74v87d8o.apps.googleusercontent.com"> <meta name="google-signin-client_id" content="524432312250-vhgidft856v8qftsc81kls4c74v87d8o.apps.googleusercontent.com">
<table class="table table-striped" [mfData]="tableData | dmpTableFilter : filterQuery" <table class="table table-striped" [mfData]="tableData | projectTableFilter : filterQuery"
#mf="mfDataTable" [mfRowsOnPage]="rowsOnPage" [(mfSortBy)]="sortBy" [(mfSortOrder)]="sortOrder"> #mf="mfDataTable" [mfRowsOnPage]="rowsOnPage" [(mfSortBy)]="sortBy" [(mfSortOrder)]="sortOrder">
<thead> <thead>
<tr> <tr>

View File

@ -16,10 +16,13 @@ export class RestBase {
} }
protocol: string = "http"; protocol: string = "http";
hostname: string ="dl010.madgik.di.uoa.gr" ;//"localhost";//"dl010.madgik.di.uoa.gr";// hostname: string ="dl010.madgik.di.uoa.gr" ;//"localhost";//"dl010.madgik.di.uoa.gr";//
port: number = 8080;//8080;// port: number = 8080;//8080;//
webappname: string = "dmp-backend";//"dmp-backend-new";// webappname: string = "dmp-backend";//"dmp-backend-new";//
/*protocol: string = "http"; /*protocol: string = "http";

View File

@ -0,0 +1,7 @@
/**
* Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
* Licensed under MIT
* @author Ariel Flesler
* @version 2.1.2
*/
;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,8 @@
"outDir": "../out-tsc/app", "outDir": "../out-tsc/app",
"baseUrl": "./", "baseUrl": "./",
"module": "es2015", "module": "es2015",
"types": [] "types": ["node"],
"typeRoots": [ "../node_modules/@types" ]
}, },
"exclude": [ "exclude": [
"test.ts", "test.ts",

View File

@ -3,3 +3,4 @@ declare var module: NodeModule;
interface NodeModule { interface NodeModule {
id: string; id: string;
} }