Commit 104f9d80 authored by Evren Kutar's avatar Evren Kutar

uib datepicker implemented

resolves #62
resolves #63
parent b75c54c4
......@@ -67,6 +67,7 @@
</div>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-i18n/angular-locale_tr.js"></script>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="bower_components/angular-route/angular-route.min.js"></script>
......
......@@ -75,6 +75,7 @@
<!-- @if NODE_ENV == 'DEVELOPMENT' -->
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-i18n/angular-locale_tr.js"></script>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="bower_components/angular-route/angular-route.min.js"></script>
......
......@@ -4,6 +4,11 @@
for="{{form.key.slice(-1)[0]}}">{{form.title}}</label>
<p class="input-group">
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="form.open($event)">
<i class="fa fa-calendar"></i>
</button>
</span>
<input ng-if="!form.fieldAddonLeft && !form.fieldAddonRight"
ng-show="form.key"
step="any"
......@@ -12,22 +17,20 @@
class="form-control {{form.fieldHtmlClass}} datepickerfield"
id="{{form.key.slice(-1)[0]}}"
ng-model-options="form.ngModelOptions"
ng-model="dt"
ng-model="form.modelDate"
ng-disabled="form.readonly"
schema-validate="form"
name="{{form.key.slice(-1)[0]}}"
aria-describedby="{{form.key.slice(-1)[0] + 'Status'}}"
type="date"
datepicker-popup
is-open="status.opened"
date-disabled="disabled(date, mode)"
close-text="Close"/>
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open($event)">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
type="{{form.type}}"
uib-datepicker-popup="{{form.format}}"
is-open="form.status.opened"
close-text="Kapat"
current-text="Bugün"
clear-text="Temizle"
ng-click="form.open($event)"/>
</p>
<!--<input ng-if="!form.fieldAddonLeft && !form.fieldAddonRight"-->
......
......@@ -184,43 +184,43 @@ angular.module('formService', ['ui.bootstrap'])
// check if type is date and if type date found change it to string
if (v.type === 'date') {
var modelDate = angular.copy(scope.model[k]);
scope.model[k] = generator.dateformatter(scope.model[k]);
scope.form[scope.form.indexOf(k)] = {
key: k, name: k,
key: k, name: k, title: v.title,
type: 'template',
modelDate: new Date(modelDate),
templateUrl: 'shared/templates/datefield.html',
validationMessage: {
'dateNotValid': "Girdiğiniz tarih geçerli değildir. <i>orn: '01.01.2015'<i/>"
'dateNotValid': "Girdiğiniz tarih geçerli değildir. <i>orn: '01.01.2015'<i/>",
302: 'Bu alan zorunludur.'
},
$asyncValidators: {
'dateNotValid': function (value) {
var deferred = $q.defer();
$timeout(function () {
scope.model[k] = angular.copy(generator.dateformatter(value));
if (value.constructor === Date) {
deferred.resolve();
}
else {
var dateValue = d = value.split('.');
if (isNaN(Date.parse([d[1],d[0],d[2]].join('.'))) || dateValue.length !== 3) {
if (isNaN(Date.parse([d[1], d[0], d[2]].join('.'))) || dateValue.length !== 3) {
deferred.reject();
} else {
deferred.resolve();
}
}, 500);
return deferred.promise;
}
});
return deferred.promise;
}
},
status: {opened: false},
open: function ($event) {
this.status.opened = true;
},
format: 'dd.MM.yyyy'
};
v.type = 'string';
scope.model[k] = generator.dateformatter(scope.model[k]);
$timeout(function () {
jQuery('#' + k).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: "dd.mm.yy",
onSelect: function (date, inst) {
scope.model[k] = date;
if (scope.modalElements) {
scope.validateModalDate(k);
scope.$broadcast('schemaForm.error.' + k, 'tv4-302', true);
}
}
});
}, 1000);
}
if (v.type === 'int' || v.type === 'float') {
......@@ -257,7 +257,7 @@ angular.module('formService', ['ui.bootstrap'])
});
}
// get selected item from titleMap using model value
if (item.key===scope.model[k]) {
if (item.key === scope.model[k]) {
formitem.selected_item = {value: item.key, name: item.value};
}
});
......@@ -363,13 +363,17 @@ angular.module('formService', ['ui.bootstrap'])
formitem.filteredItems = generator.get_diff_array(formitem.filteredItems, formitem.selectedFilteredItems);
},
select: function (selectedItemsModel) {
if(!selectedItemsModel){return;}
if (!selectedItemsModel) {
return;
}
formitem.selectedFilteredItems = formitem.selectedFilteredItems.concat(selectedItemsModel);
formitem.appendFiltered(formitem.filterValue);
scope.model[k] = (scope.model[k] || []).concat(formitem.dataToModel(selectedItemsModel));
},
deselect: function (selectedFilteredItemsModel) {
if(!selectedFilteredItemsModel){return;}
if (!selectedFilteredItemsModel) {
return;
}
formitem.selectedFilteredItems = generator.get_diff_array(angular.copy(formitem.selectedFilteredItems), angular.copy(selectedFilteredItemsModel));
formitem.appendFiltered(formitem.filterValue);
formitem.filteredItems = formitem.filteredItems.concat(selectedFilteredItemsModel);
......@@ -437,7 +441,7 @@ angular.module('formService', ['ui.bootstrap'])
if (scope.model[k]) {
angular.forEach(scope.model[k], function (value, key) {
angular.forEach(value, function (y, x) {
if (y.constructor===Object) {
if (y.constructor === Object) {
scope.model[k][key][x] = y.key;
}
});
......@@ -467,7 +471,8 @@ angular.module('formService', ['ui.bootstrap'])
if (ndate == 'Invalid Date') {
return '';
} else {
var newdatearray = [ndate.getDate(), ndate.getMonth() + 1, ndate.getFullYear()];
var newdatearray = [("0" + ndate.getDate()).slice(-2), ndate.getMonth() + 1, ndate.getFullYear()];
return newdatearray.join('.');
}
};
......@@ -545,7 +550,7 @@ angular.module('formService', ['ui.bootstrap'])
return re.test(tcno);
};
generator.isValidDate = function (dateValue) {
var datevalid = Date.parse(dateValue) === Nan ? false : true;
var datevalid = Date.parse(dateValue) === NaN ? false : true;
return datevalid;
};
generator.asyncValidators = {
......@@ -696,8 +701,6 @@ angular.module('formService', ['ui.bootstrap'])
"filter": $scope.filter
};
debugger;
return $http.post(generator.makeUrl($scope), data)
.success(function (data) {
if (redirectTo === true) {
......@@ -842,8 +845,16 @@ angular.module('formService', ['ui.bootstrap'])
angular.forEach(childmodel.form, function (v, k) {
if (v.formName === key) {
//if (!childmodel.model[key].key) {
function indexInTitleMap(element,index,array){if(element['value']===value){return element;}}
reformattedModel[key] = {"key": value, "unicode": v.titleMap.find(indexInTitleMap).name};
function indexInTitleMap(element, index, array) {
if (element['value'] === value) {
return element;
}
}
reformattedModel[key] = {
"key": value,
"unicode": v.titleMap.find(indexInTitleMap).name
};
//}
}
});
......@@ -900,7 +911,7 @@ angular.module('formService', ['ui.bootstrap'])
none: ''
},
workOnForm: 'linkedModelForm',
workOnDiv: '-modal'+formName
workOnDiv: '-modal' + formName
},
submitModalForm: function () {
$rootScope.$broadcast('submitModalForm');
......
......@@ -15,6 +15,7 @@
"angular-resource": "1.4.7",
"angular-cookies": "1.4.7",
"angular-bootstrap": "0.14.3",
"angular-i18n": "1.4.7",
"font-awesome": "4.3.0",
"angular-schema-form": "0.8.3",
"angular-loading-bar": "~0.8.0",
......
This diff is collapsed.
This diff is collapsed.
......@@ -222,68 +222,31 @@ angular.module("components/crud/templates/list.html", []).run(["$templateCache",
angular.module("components/crud/templates/show.html", []).run(["$templateCache", function($templateCache) {
$templateCache.put("components/crud/templates/show.html",
"<div class=\"starter-template container\">\n" +
" <!--<div class=\"personnel-info-container\">-->\n" +
" <div ng-repeat=\"obj in object\">\n" +
" <div class=\"info-block-header\">\n" +
" <h1>{{model}}</h1>\n" +
" </div>\n" +
" <div class=\"table-responsive\">\n" +
" <table class=\"table\">\n" +
" <tbody>\n" +
" <tr ng-repeat=\"(key, value) in object\">\n" +
" <thead ng-if=\"obj.type==='table-multiRow'\">\n" +
" <tr>\n" +
" <td ng-repeat=\"(key, value) in obj[0]\">{{key}}</td>\n" +
" </tr>\n" +
" </thead>\n" +
" <tbody ng-if=\"obj.type==='table-multiRow'\">\n" +
" <tr ng-repeat=\"row in obj.fields\">\n" +
" <td ng-repeat=\"(k,v) in row\">{{v}}</td>\n" +
" </tr>\n" +
" </tbody>\n" +
" <tbody ng-if=\"obj.type==='table'\">\n" +
" <tr ng-repeat=\"(key, value) in obj.fields\">\n" +
" <td class=\"col-md-2\">{{key}}</td>\n" +
" <td class=\"col-md-8\">{{value}}</td>\n" +
" </tr>\n" +
" </tbody>\n" +
" </table>\n" +
" </div>\n" +
"\n" +
" <!--<div class=\"personnel-info-left\">-->\n" +
"\n" +
" <!--&lt;!&ndash;<div class=\"generic-profile-picture\">&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;<img src=\"../../img/sample-profile-pic.jpg\" />&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;</div>&ndash;&gt;-->\n" +
" <!--<div class=\"info-block\">-->\n" +
" <!--<div class=\"info-block-header\">-->\n" +
" <!--<h1>{{model}}</h1>-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of info-block-header &ndash;&gt;-->\n" +
" <!--<div class=\"info-block-body\" ng-repeat=\"(key, value) in object\">-->\n" +
" <!--<dl class=\"dl-horizontal\">-->\n" +
" <!--<dt>{{ key }}</dt>-->\n" +
" <!--<dd>{{value}}</dd>-->\n" +
" <!--</dl>-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of info-block-body &ndash;&gt;-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash;<ul>&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;<li ng-repeat=\"(key, value) in object\"><span class=\"col-md-3\">{{ key }}:</span>{{value}}</li>&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;<li>Pozisyon</li>&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;<li><i class=\"fa fa-phone\"></i> (+90) 123 456 7890</li>&ndash;&gt;-->\n" +
" <!--&lt;!&ndash;<li><i class=\"fa fa-envelope\"></i> samplemail@mail.com</li>&ndash;&gt;-->\n" +
" <!--&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;-->\n" +
" <!--&lt;!&ndash;</ul>&ndash;&gt;-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of personnel-info-left &ndash;&gt;-->\n" +
" <!--<div class=\"personnel-info-right\">-->\n" +
" <!--<div class=\"info-block\" ng-repeat=\"(key, value) in listobjects\">-->\n" +
" <!--<div class=\"info-block-header\">-->\n" +
" <!--<h2>{{key}}</h2>-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of info-block-header &ndash;&gt;-->\n" +
" <!--<div class=\"info-block-body\" ng-repeat=\"(k, v) in value\">-->\n" +
" <!--<dl class=\"dl-horizontal\">-->\n" +
" <!--<dt>{{k}}</dt>-->\n" +
" <!--<dd>{{v}}</dd>-->\n" +
" <!--</dl>-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of info-block-body &ndash;&gt;-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; end of info block &ndash;&gt;-->\n" +
" <!--&lt;!&ndash; end of info block &ndash;&gt;-->\n" +
" <!--</div>-->\n" +
" <!--&lt;!&ndash; personnel-info-left &ndash;&gt;-->\n" +
" <!--</div>-->\n" +
" <!-- end of personnel-info-container -->\n" +
" </div>\n" +
"</div>");
}]);
......@@ -606,19 +569,21 @@ angular.module("shared/templates/datefield.html", []).run(["$templateCache", fun
" class=\"form-control {{form.fieldHtmlClass}} datepickerfield\"\n" +
" id=\"{{form.key.slice(-1)[0]}}\"\n" +
" ng-model-options=\"form.ngModelOptions\"\n" +
" ng-model=\"dt\"\n" +
" ng-model=\"$$value$$\"\n" +
" ng-disabled=\"form.readonly\"\n" +
" schema-validate=\"form\"\n" +
" name=\"{{form.key.slice(-1)[0]}}\"\n" +
" aria-describedby=\"{{form.key.slice(-1)[0] + 'Status'}}\"\n" +
"\n" +
" type=\"date\"\n" +
" datepicker-popup\n" +
" is-open=\"status.opened\"\n" +
" date-disabled=\"disabled(date, mode)\"\n" +
" close-text=\"Close\"/>\n" +
" type=\"text\"\n" +
" uib-datepicker-popup=\"{{form.format}}\"\n" +
" is-open=\"form.status.opened\"\n" +
" close-text=\"Kapat\"\n" +
" current-text=\"Bugün\"\n" +
" clear-text=\"Temizle\"\n" +
" ng-click=\"form.open($event)\"/>\n" +
" <span class=\"input-group-btn\">\n" +
" <button type=\"button\" class=\"btn btn-default\" ng-click=\"open($event)\">\n" +
" <button type=\"button\" class=\"btn btn-default\" ng-click=\"form.open($event)\">\n" +
" <i class=\"glyphicon glyphicon-calendar\"></i>\n" +
" </button>\n" +
" </span>\n" +
......
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