Commit 5e0bfdd6 authored by Evren Kutar's avatar Evren Kutar

date field validation bug fix

parent bbba9179
......@@ -1636,3 +1636,6 @@ table.dataTable thead .sorting:after {
}
/* end page transitions */
.movetobottom {
margin-right: 10px !important;
}
\ No newline at end of file
......@@ -34,6 +34,7 @@ var app = angular.module(
*/
constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
//var subdomain = ;
var backendurl = "http://api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
......
......@@ -38,9 +38,10 @@ crud.controller('CRUDAddEditCtrl', function ($scope, $rootScope, $location, $htt
}
$scope.onSubmit = function (form) {
$scope.$broadcast('schemaFormValidate');
//$scope.$broadcast('schemaFormValidate');
if (form.$valid) {
debugger;
//if (form.$valid) {
Generator.submit($scope)
.success(function (data) {
......@@ -48,7 +49,7 @@ crud.controller('CRUDAddEditCtrl', function ($scope, $rootScope, $location, $htt
.error(function (data) {
$scope.message = data.title;
});
}
//}
};
......
<h1>{{ schema.title }}</h1>
<form id="formgenerated" name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(formgenerated)"></form>
<div class="container">
<h1>{{ schema.title }}</h1>
<div ng-repeat="node in Node">
<h3>{{ node.title }}
<form id="formgenerated" name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model"
ng-submit="onSubmit(formgenerated)"></form>
<div ng-repeat="node in Node">
<h3>{{ node.title }}
<span ng-if="node.lengthModels < 1">
<a href="javascript:void(0);" modal-for-nodes="{{node.schema.model_name}},Node">
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</span>
</h3>
<div class="node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</h3>
<div class="node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</div>
<hr>
</div>
<hr>
</div>
<div ng-repeat="node in ListNode">
<h3>{{ node.title }}
<div ng-repeat="node in ListNode">
<h3>{{ node.title }}
<span>
<a href="javascript:void(0);" modal-for-nodes="{{node.schema.model_name}},ListNode,add">
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</span>
</h3>
<div class="list-node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</h3>
<div class="list-node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</div>
<hr>
</div>
<hr>
</div>
<button id="submitbutton" type="button" class="btn btn-primary" ng-click="onSubmit(formgenerated)">Kaydet</button>
<!-- <button type="button" class="btn btn-warning">Düzenle</button> todo: make it conditional -->
<!-- <button type="button" class="btn btn-danger">İptal</button> todo: turn back to previous page -->
\ No newline at end of file
<div class="buttons-on-bottom"></div>
<!--<button id="submitbutton" type="button" class="btn btn-primary" ng-click="onSubmit(formgenerated)">Kaydet</button>-->
<!-- <button type="button" class="btn btn-warning">Düzenle</button> todo: make it conditional -->
<!-- <button type="button" class="btn btn-danger">İptal</button> todo: turn back to previous page -->
</div>
\ No newline at end of file
<div ng-app="ulakbus.crud">
<div class="container" ng-app="ulakbus.crud">
<div class="col-md-6">
<h1>{{ schema.title }}</h1>
<form name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(formgenerated)"></form>
......
<div class="starter-template">
<div class="starter-template container">
<h1>{{model}}
<a href="{{addLink}}">
<button type="button" class="btn btn-primary">Ekle</button>
......
<!--<div class="starter-template">-->
<!--<h1>{{model}}</h1>-->
<!--<p ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</p>-->
<!--</div>-->
<div class="starter-template">
<div class="starter-template container">
<!--<div class="personnel-info-container">-->
<div class="info-block-header">
<h1>{{model}}</h1>
</div>
<div class="table-responsive">
<table class="table">
<tbody>
<tr ng-repeat="(key, value) in object">
<td class="col-md-2">{{key}}</td>
<td class="col-md-8">{{value}}</td>
</tr>
</tbody>
</table>
</div>
<div class="personnel-info-container">
<div class="personnel-info-left">
<!--<div class="personnel-info-left">-->
<!--<div class="generic-profile-picture">-->
<!--<img src="../../img/sample-profile-pic.jpg" />-->
<!--&lt;!&ndash;<div class="generic-profile-picture">&ndash;&gt;-->
<!--&lt;!&ndash;<img src="../../img/sample-profile-pic.jpg" />&ndash;&gt;-->
<!--&lt;!&ndash;</div>&ndash;&gt;-->
<!--<div class="info-block">-->
<!--<div class="info-block-header">-->
<!--<h1>{{model}}</h1>-->
<!--</div>-->
<div class="info-block">
<div class="info-block-header">
<h1>{{model}}</h1>
</div>
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(key, value) in object">
<dl class="dl-horizontal">
<dt>{{ key }}</dt>
<dd>{{value}}</dd>
</dl>
</div>
<!-- end of info-block-body -->
</div>
<!--<ul>-->
<!--<li ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</li>-->
<!--<li>Pozisyon</li>-->
<!--<li><i class="fa fa-phone"></i> (+90) 123 456 7890</li>-->
<!--<li><i class="fa fa-envelope"></i> samplemail@mail.com</li>-->
<!--<li><i class="fa fa-map-marker"></i> Gülbahçe Mah. İzmir Teknoloji Geliştirme Bölgesi A9 Blok 215/A IYTE Campus, URLA/IZMIR</li></li>-->
<!--</ul>-->
</div>
<!-- end of personnel-info-left -->
<div class="personnel-info-right">
<div class="info-block" ng-repeat="(key, value) in listobjects">
<div class="info-block-header">
<h2>{{key}}</h2>
</div>
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(k, v) in value">
<dl class="dl-horizontal">
<dt>{{k}}</dt>
<dd>{{v}}</dd>
</dl>
</div>
<!-- end of info-block-body -->
</div>
<!-- end of info block -->
<!-- end of info block -->
</div>
<!-- personnel-info-left -->
</div>
<!-- end of personnel-info-container -->
</div>
\ No newline at end of file
<!--&lt;!&ndash; end of info-block-header &ndash;&gt;-->
<!--<div class="info-block-body" ng-repeat="(key, value) in object">-->
<!--<dl class="dl-horizontal">-->
<!--<dt>{{ key }}</dt>-->
<!--<dd>{{value}}</dd>-->
<!--</dl>-->
<!--</div>-->
<!--&lt;!&ndash; end of info-block-body &ndash;&gt;-->
<!--</div>-->
<!--&lt;!&ndash;<ul>&ndash;&gt;-->
<!--&lt;!&ndash;<li ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</li>&ndash;&gt;-->
<!--&lt;!&ndash;<li>Pozisyon</li>&ndash;&gt;-->
<!--&lt;!&ndash;<li><i class="fa fa-phone"></i> (+90) 123 456 7890</li>&ndash;&gt;-->
<!--&lt;!&ndash;<li><i class="fa fa-envelope"></i> samplemail@mail.com</li>&ndash;&gt;-->
<!--&lt;!&ndash;<li><i class="fa fa-map-marker"></i> Gülbahçe Mah. İzmir Teknoloji Geliştirme Bölgesi A9 Blok 215/A IYTE Campus, URLA/IZMIR</li></li>&ndash;&gt;-->
<!--&lt;!&ndash;</ul>&ndash;&gt;-->
<!--</div>-->
<!--&lt;!&ndash; end of personnel-info-left &ndash;&gt;-->
<!--<div class="personnel-info-right">-->
<!--<div class="info-block" ng-repeat="(key, value) in listobjects">-->
<!--<div class="info-block-header">-->
<!--<h2>{{key}}</h2>-->
<!--</div>-->
<!--&lt;!&ndash; end of info-block-header &ndash;&gt;-->
<!--<div class="info-block-body" ng-repeat="(k, v) in value">-->
<!--<dl class="dl-horizontal">-->
<!--<dt>{{k}}</dt>-->
<!--<dd>{{v}}</dd>-->
<!--</dl>-->
<!--</div>-->
<!--&lt;!&ndash; end of info-block-body &ndash;&gt;-->
<!--</div>-->
<!--&lt;!&ndash; end of info block &ndash;&gt;-->
<!--&lt;!&ndash; end of info block &ndash;&gt;-->
<!--</div>-->
<!--&lt;!&ndash; personnel-info-left &ndash;&gt;-->
<!--</div>-->
<!-- end of personnel-info-container -->
</div>
\ No newline at end of file
<h1>{{ schema.title }}</h1>
<form id="formgenerated" name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model"
ng-submit="onSubmit(formgenerated)"></form>
<div class="container">
<h1>{{ schema.title }}</h1>
<div ng-repeat="node in Node">
<h3>{{ node.title }}
<form id="formgenerated" name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model"
ng-submit="onSubmit(formgenerated)"></form>
<div ng-repeat="node in Node">
<h3>{{ node.title }}
<span ng-if="node.lengthModels < 1">
<a href="javascript:void(0);" modal-for-nodes="{{node.schema.model_name}},Node">
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</span>
</h3>
</h3>
<div class="node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
<div class="node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</div>
<hr>
</div>
<hr>
</div>
<div ng-repeat="node in ListNode">
<h3>{{ node.title }}
<div ng-repeat="node in ListNode">
<h3>{{ node.title }}
<span>
<a href="javascript:void(0);" modal-for-nodes="{{node.schema.model_name}},ListNode,add">
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</span>
</h3>
</h3>
<div class="list-node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
<div class="list-node-table">
<ng-include src="'shared/templates/nodeTable.html'"></ng-include>
</div>
<hr>
</div>
<hr>
</div>
<!--<button id="submitbutton" type="button" class="btn btn-primary" ng-click="onSubmit(formgenerated)">Kaydet</button>-->
<!-- <button type="button" class="btn btn-warning">Düzenle</button> todo: make it conditional -->
<!-- <button type="button" class="btn btn-danger">İptal</button> todo: turn back to previous page -->
\ No newline at end of file
</div>
\ No newline at end of file
<div ng-app="ulakbus.crud">
<div class="container" ng-app="ulakbus.crud">
<div class="col-md-6">
<h1>{{ schema.title }}</h1>
<form name="formgenerated" sf-schema="schema" sf-form="form" sf-model="model" ng-submit="onSubmit(formgenerated)"></form>
......
<div class="starter-template">
<div class="starter-template container">
<h1>{{model}} <a href="#/crud/{{model}}/add"><button type="button" class="btn btn-primary">Ekle</button></a></h1>
<div class="row" ng-if="!nobjects[1]">
<div class="col-md-12">
......
<!--<div class="starter-template">-->
<!--<h1>{{model}}</h1>-->
<div class="starter-template container">
<!--<p ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</p>-->
<!--</div>-->
<div class="personnel-info-container">
<div class="personnel-info-left">
<div class="starter-template">
<div class="personnel-info-container">
<div class="personnel-info-left">
<!--<div class="generic-profile-picture">-->
<!--<img src="../../img/sample-profile-pic.jpg" />-->
<!--</div>-->
<div class="info-block">
<div class="info-block-header">
<h1>{{model}}</h1>
</div>
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(key, value) in object">
<dl class="dl-horizontal">
<dt>{{ key }}</dt>
<dd>{{value}}</dd>
</dl>
</div>
<!-- end of info-block-body -->
<!--<div class="generic-profile-picture">-->
<!--<img src="../../img/sample-profile-pic.jpg" />-->
<!--</div>-->
<div class="info-block">
<div class="info-block-header">
<h1>{{model}}</h1>
</div>
<!--<ul>-->
<!--<li ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</li>-->
<!--<li>Pozisyon</li>-->
<!--<li><i class="fa fa-phone"></i> (+90) 123 456 7890</li>-->
<!--<li><i class="fa fa-envelope"></i> samplemail@mail.com</li>-->
<!--<li><i class="fa fa-map-marker"></i> Gülbahçe Mah. İzmir Teknoloji Geliştirme Bölgesi A9 Blok 215/A IYTE Campus, URLA/IZMIR</li></li>-->
<!--</ul>-->
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(key, value) in object">
<dl class="dl-horizontal">
<dt>{{ key }}</dt>
<dd>{{value}}</dd>
</dl>
</div>
<!-- end of info-block-body -->
</div>
<!-- end of personnel-info-left -->
<div class="personnel-info-right">
<div class="info-block" ng-repeat="(key, value) in listobjects">
<div class="info-block-header">
<h2>{{key}}</h2>
</div>
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(k, v) in value">
<dl class="dl-horizontal">
<dt>{{k}}</dt>
<dd>{{v}}</dd>
</dl>
</div>
<!-- end of info-block-body -->
<!--<ul>-->
<!--<li ng-repeat="(key, value) in object"><span class="col-md-3">{{ key }}:</span>{{value}}</li>-->
<!--<li>Pozisyon</li>-->
<!--<li><i class="fa fa-phone"></i> (+90) 123 456 7890</li>-->
<!--<li><i class="fa fa-envelope"></i> samplemail@mail.com</li>-->
<!--<li><i class="fa fa-map-marker"></i> Gülbahçe Mah. İzmir Teknoloji Geliştirme Bölgesi A9 Blok 215/A IYTE Campus, URLA/IZMIR</li></li>-->
<!--</ul>-->
</div>
<!-- end of personnel-info-left -->
<div class="personnel-info-right">
<div class="info-block" ng-repeat="(key, value) in listobjects">
<div class="info-block-header">
<h2>{{key}}</h2>
</div>
<!-- end of info-block-header -->
<div class="info-block-body" ng-repeat="(k, v) in value">
<dl class="dl-horizontal">
<dt>{{k}}</dt>
<dd>{{v}}</dd>
</dl>
</div>
<!-- end of info block -->
<!-- end of info block -->
<!-- end of info-block-body -->
</div>
<!-- personnel-info-left -->
<!-- end of info block -->
<!-- end of info block -->
</div>
<!-- end of personnel-info-container -->
</div>
\ No newline at end of file
<!-- personnel-info-left -->
</div>
<!-- end of personnel-info-container -->
</div>
\ No newline at end of file
......@@ -39,6 +39,7 @@ var app = angular.module(
*/
constant("RESTURL", (function () {
// todo: below backendurl definition is for development purpose and will be deleted
//var subdomain = ;
var backendurl = "http://api.ulakbus.net/";
if (document.cookie.indexOf("backendurl") > -1) {
var cookiearray = document.cookie.split(';');
......
<div class="col-lg-4">
<div class="panel" ng-class="{'info':'panel-info', 'error': 'panel-red', 'warning': 'panel-yellow'}[msgbox.type]">
<div class="panel-heading">
{{msgbox.title}}
</div>
<div class="panel-body">
<p>{{msgbox.msg}}</p>
</div>
<!--<div class="panel-footer">-->
<div class="row">
<div class="container">
<div class="col-lg-12">
<div class="panel" ng-class="{'info':'panel-info', 'error': 'panel-red', 'warning': 'panel-yellow'}[msgbox.type]">
<div class="panel-heading">
{{msgbox.title}}
</div>
<div class="panel-body">
<p>{{msgbox.msg}}</p>
</div>
<!--<div class="panel-footer">-->
<!--</div>-->
<!--</div>-->
</div>
</div>
</div>
</div>
<!--<div class="row">-->
<!--<div class="col-lg-4">-->
......
......@@ -52,7 +52,7 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
* prepareforms checks input types and convert if necessary
*/
// todo: remove after backend fix
// todo: remove after backend fix
angular.forEach(scope.form, function (value, key) {
if (value.type === 'select') {
scope.schema.properties[value.key].type = 'select';
......@@ -89,8 +89,8 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
scope.form[scope.form.indexOf(k)] = {
type: v.type,
title: v.title,
style: "btn-primary",
onClick: function(){
style: "btn-primary movetobottom hide pull-left",
onClick: function () {
delete scope.form_params.cmd;
delete scope.form_params.flow;
if (v.cmd) {
......@@ -99,10 +99,15 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
if (v.flow) {
scope.form_params["flow"] = v.flow;
}
scope.model[k]=1;
scope.model[k] = 1;
generator.submit(scope);
}
};
$timeout(function () {
var buttons = angular.element(document.querySelector('.movetobottom'));
angular.element(document.querySelector('.buttons-on-bottom')).append(buttons);
buttons.removeClass('hide');
});
}
// check if type is date and if type date found change it to string
......@@ -116,8 +121,9 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
changeMonth: true,
changeYear: true,
dateFormat: "dd.mm.yy",
onSelect: function (date) {
onSelect: function (date, inst) {
scope.model[k] = date;
scope.$broadcast('schemaForm.error.'+k,'tv4-302',true);
}
});
});
......@@ -155,7 +161,7 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
if (item !== res.data.nobjects[0]) {
formitem.titleMap.push({
"value": item[0],
"name": item[1] +' '+ (item[2] ? item[2] : '') + '...'
"name": item[1] + ' ' + (item[2] ? item[2] : '') + '...'
});
}
});
......@@ -163,7 +169,7 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
onSelect: function (item) {
scope.model[k] = item.value;
},
onDropdownSelect: function(item, inputname) {
onDropdownSelect: function (item, inputname) {
scope.model[k] = item.value;
jQuery('input[name=' + inputname + ']').val(item.name);
}
......@@ -240,7 +246,7 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
};
generator.itemLinksGenerator = function (scope, itemlist) {
angular.forEach(itemlist.nobjects, function (value, key) {
function makelink (page) {
function makelink(page) {
if (value === '-1' && page !== 'add/') {
return;
}
......@@ -331,56 +337,62 @@ form_generator.factory('Generator', function ($http, $q, $timeout, $location, $c
return $http.post(generator.makePostUrl($scope), data);
};
generator.submit = function ($scope) {
// todo: diff for all submits to recognize form change. if no change returns to view with no submit
angular.forEach($scope.ListNode, function (value, key) {
$scope.model[key] = value.model;
});
angular.forEach($scope.Node, function (value, key) {
$scope.model[key] = value.model;
});
var data = {
"form": $scope.model,
//"subcmd": "do_list",
"model": $scope.form_params.model,
"token": $scope.token
};
if ($scope.form_params.cmd) {
data["cmd"] = $scope.form_params.cmd;
}
if ($scope.form_params.cmd) {
data["flow"] = $scope.form_params.flow;
}
if ($scope.object_id) {
//var get_diff = FormDiff.get_diff($scope.model, $scope.initialModel);
data.object_id = $scope.object_id;
//data.form = get_diff;
}
return $http.post(generator.makeUrl($scope), data)
.success(function (data) {
// if return data consists forms key then trigger redraw the form with updated data
if (data.forms) {
delete $scope.form, $scope.model, $scope.schema, $scope.form_params.cmd;
generator.generate($scope, data);
$scope.$broadcast('schemaFormRedraw')
}
$scope.$broadcast('schemaFormValidate');
if ($scope.formgenerated.$valid) {
// if submit returns nobjects after save
if (data.nobjects) {
generator.itemLinksGenerator($scope, data);
data[$scope.form_params.param] = $scope.form_params.id;
$location.path('/crud/' + $scope.form_params.model + '/list').search(angular.fromJson(data));
}
// if submit returns msgbox after save
if (data.msgbox) {
$scope.msgbox = data.msgbox;
var newElement = $compile( "<msgbox ></msgbox>" )( $scope );
angular.element(document.querySelector('.main.ng-scope')).children().remove();
angular.element(document.querySelector('.main.ng-scope')).append( newElement );
}
// todo: diff for all submits to recognize form change. if no change returns to view with no submit
angular.forEach($scope.ListNode, function (value, key) {
$scope.model[key] = value.model;
});
angular.forEach($scope.Node, function (value, key) {
$scope.model[key] = value.model;
});
var data = {
"form": $scope.model,
//"subcmd": "do_list",
"model": $scope.form_params.model,
"token": $scope.token
};
if ($scope.form_params.cmd) {
data["cmd"] = $scope.form_params.cmd;
}
if ($scope.form_params.flow) {
data["flow"] = $scope.form_params.flow;
}
if ($scope.object_id) {
//var get_diff = FormDiff.get_diff($scope.model, $scope.initialModel);
data.object_id = $scope.object_id;
//data.form = get_diff;
}
return $http.post(generator.makeUrl($scope), data)
.success(function (data) {
// if return data consists forms key then trigger redraw the form with updated data
if (data.forms) {
delete $scope.form, $scope.model, $scope.schema, $scope.form_params.cmd;
generator.generate($scope, data);
$scope.$broadcast('schemaFormRedraw')
}
// if submit returns nobjects after save
if (data.nobjects) {
generator.itemLinksGenerator($scope, data);
data[$scope.form_params.param] = $scope.form_params.id;
$location.path('/crud/' + $scope.form_params.model + '/list').search(angular.fromJson(data));
}
// if submit returns msgbox after save
if (data.msgbox) {
$scope.msgbox = data.msgbox;
var newElement = $compile("<msgbox ></msgbox>")($scope);
angular.element(document.querySelector('.main.ng-scope')).children().remove();
angular.element(document.querySelector('.main.ng-scope')).append(newElement);
}
});
}
};
return generator;
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment