Commit d5328b2b authored by Evren Kutar's avatar Evren Kutar

resolves #21

fix: when refresh 500 error (route cmd wrong)
parent 08d077a5
......@@ -39,7 +39,7 @@ angular.module('ulakbus.crud', ['ui.bootstrap', 'schemaForm', 'formService'])
}
});
scope.form_params = {
cmd: cmd,
//cmd: cmd,
model: routeParams.model,
param: scope.param || routeParams.param,
id: scope.param_id || routeParams.param_id,
......
<div class="form-group {{form.htmlClass}} schema-form-select col-md-12"
ng-class="{'has-error': form.disableErrorState !== true && hasError(), 'has-success': form.disableSuccessState !== true && hasSuccess(), 'has-feedback': form.feedback !== false}">
<div class="col-md-8">
<div class="col-md-12">
<label class="control-label {{form.labelHtmlClass}}" ng-show="showTitle()">
{{form.title}}
</label>
<a><i class="fa fa-plus-circle fa-fw" add-modal-for-linked-model="{{form.formName}}"></i></a>
<div class="form-group input-group">
<span class="input-group-btn">
......@@ -43,9 +44,4 @@
<div class="help-block" sf-message="form.description"></div>
</div>
<div class="col-md-4">
<a href="javascript:void(0);" add-modal-for-linked-model="{{form.formName}}">
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</div>
</div>
\ No newline at end of file
<div class="form-group {{form.htmlClass}} schema-form-select col-md-12"
ng-class="{'has-error': form.disableErrorState !== true && hasError(), 'has-success': form.disableSuccessState !== true && hasSuccess(), 'has-feedback': form.feedback !== false}">
<div class="col-md-8">
<div class="col-md-12">
<label class="control-label {{form.labelHtmlClass}}" ng-show="showTitle()">
{{form.title}}
</label>
<a><i class="fa fa-plus-circle fa-fw" add-modal-for-linked-model="{{form.formName}}"></i></a>
<div class="row">
<div class="form-group input-group">
<div class="col-md-12">
<input type="text"
placeholder="{{form.title}} filtrele"
class="form-control {{form.fieldHtmlClass}}"
name="filter-interface"
ng-model="form.filterValue"
ng-keyup="form.appendFiltered(form.filterValue)"
/>
ng-keyup="form.appendFiltered(form.filterValue)"/>
</div>
</div>
<div class="row">
<div class="col-md-5">
<div class="col-md-12">
<label for="filterItems">{{form.title}} Liste</label>
<select ng-model="selectedItemsModel"
value="$$value$$"
......@@ -31,13 +30,12 @@
</select>
</div>
<div class="col-md-1">
<a href="javascript:void(0)" ng-click="form.select(selectedItemsModel)"><i class="fa fa-arrow-right fa-fw"></i></a><br>
<a href="javascript:void(0)" ng-click="form.deselect(selectedFilteredItemsModel)"><i class="fa fa-arrow-left fa-fw"></i></a>
<div class="col-md-12 text-center">
<a><i class="fa fa-arrow-down fa-fw" ng-click="form.select(selectedItemsModel)"></i></a>
<a><i class="fa fa-arrow-up fa-fw" ng-click="form.deselect(selectedFilteredItemsModel)"></i></a>
</div>
<div class="col-md-5">
<div class="col-md-12">
<label for="selectedItems">Seçilenler</label>
<select ng-model="selectedFilteredItemsModel"
value="$$value$$"
......@@ -54,9 +52,9 @@
<div class="help-block" sf-message="form.description"></div>
</div>
<div class="col-md-4">
<a href="javascript:void(0);" add-modal-for-linked-model>
<i class="fa fa-plus-circle fa-fw"></i>
</a>
</div>
<!--<div class="col-md-4">-->
<!--<a href="javascript:void(0);" add-modal-for-linked-model>-->
<!--<i class="fa fa-plus-circle fa-fw"></i>-->
<!--</a>-->
<!--</div>-->
</div>
\ No newline at end of file
......@@ -31,7 +31,6 @@ angular.module('formService', ['ui.bootstrap'])
*/
generator.makeUrl = function (scope) {
var getparams = scope.form_params.param ? "?" + scope.form_params.param + "=" + scope.form_params.id : "";
//return RESTURL.url + scope.url + '/' + (scope.form_params.model || '') + getparams;
return RESTURL.url + scope.url + getparams;
};
/**
......@@ -71,10 +70,6 @@ angular.module('formService', ['ui.bootstrap'])
scope.object_id = scope.form_params.object_id;
// showSaveButton is used for to show or not to show save button on top of the page
// here change to true because the view retrieves form from api
$rootScope.showSaveButton = true;
$log.debug('scope at after generate', scope);
return scope;
};
......@@ -100,9 +95,6 @@ angular.module('formService', ['ui.bootstrap'])
*/
generator.prepareFormItems = function (scope) {
//scope.schema.properties.Permissions ? scope.schema.properties.Permissions['widget']='filter_interface':true;
// todo: remove after backend fix
angular.forEach(scope.form, function (value, key) {
if (value.type === 'select') {
scope.schema.properties[value.key].type = 'select';
......@@ -185,9 +177,6 @@ angular.module('formService', ['ui.bootstrap'])
//var buttonsToTop = angular.element(document.querySelector('.' + buttonClass));
//angular.element(document.querySelector(selectorTop)).append(buttonsToTop);
$log.debug(selectorBottom, buttonsToBottom);
$log.debug(angular.element(document.querySelector(selectorBottom)));
buttonsToBottom.removeClass('hide');
//buttonsToTop.removeClass('hide');
});
......@@ -201,9 +190,9 @@ angular.module('formService', ['ui.bootstrap'])
'dateNotValid': "Girdiğiniz tarih geçerli değildir. <i>orn: '01.01.2015'<i/>"
},
$asyncValidators: {
'dateNotValid': function(value) {
'dateNotValid': function (value) {
var deferred = $q.defer();
$timeout(function(){
$timeout(function () {
if (isNaN(Date.parse(value)) || value.split('.').length !== 3) {
deferred.reject();
} else {
......@@ -329,24 +318,25 @@ angular.module('formService', ['ui.bootstrap'])
"name": item.value
});
}
// get selected item from titleMap using model value
if (item.key === scope.model[k]) {
formitem.selected_item = {value: item.key, name: item.value};
}
});
// after rendering change input value to model value
scope.$watch(document.querySelector('input[name=' + v.model_name + ']'),
function () {
angular.element(document.querySelector('input[name=' + v.model_name + ']')).val(formitem.selected_item.name);
}
);
formitem.filteredItems = generator.get_diff_array(angular.copy(formitem.titleMap), angular.copy(formitem.selectedFilteredItems));
})
};
var modelItems = [];
angular.forEach(scope.model[k], function (value, mkey) {
modelItems.push({
"value": value[v.schema[0].name].key,
"name": value[v.schema[0].name].unicode
})
});
formitem = {
type: "template",
templateUrl: "shared/templates/multiselect.html",
title: v.title,
// formName will be used in modal return to save item on form
formName: k,
wf: v.wf,
add_cmd: v.add_cmd,
name: v.model_name,
......@@ -354,7 +344,7 @@ angular.module('formService', ['ui.bootstrap'])
filterValue: '',
selected_item: {},
filteredItems: [],
selectedFilteredItems: [],
selectedFilteredItems: modelItems,
titleMap: scope.generateTitleMap(modelScope),
onSelect: function (item) {
scope.model[k] = item.value;
......@@ -364,8 +354,8 @@ angular.module('formService', ['ui.bootstrap'])
jQuery('input[name=' + inputname + ']').val(item.name);
},
appendFiltered: function (filterValue) {
formitem.filteredItems = [];
if (filterValue.length > 2) {
formitem.filteredItems = [];
angular.forEach(formitem.titleMap, function (value, key) {
if (value.name.indexOf(filterValue) > -1) {
formitem.filteredItems.push(formitem.titleMap[key]);
......@@ -375,13 +365,16 @@ angular.module('formService', ['ui.bootstrap'])
formitem.filteredItems = generator.get_diff_array(formitem.filteredItems, formitem.selectedFilteredItems);
},
select: function (selectedItemsModel) {
if(!selectedItemsModel){return;}
formitem.selectedFilteredItems = formitem.selectedFilteredItems.concat(selectedItemsModel);
formitem.appendFiltered(formitem.filterValue);
scope.model[k] = formitem.dataToModel(selectedItemsModel);
},
deselect: function (selectedFilteredItemsModel) {
formitem.selectedFilteredItems = generator.get_diff_array(formitem.selectedFilteredItems, selectedFilteredItemsModel);
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);
scope.model[k] = formitem.dataToModel(formitem.selectedFilteredItems);
},
dataToModel: function (data) {
......@@ -621,8 +614,6 @@ angular.module('formService', ['ui.bootstrap'])
else {
$location.path(pathUrl);
}
$log.debug('pathDecider scope', scope);
}
// client_cmd can be in ['list', 'form', 'show', 'reload', 'reset']
......@@ -657,7 +648,7 @@ angular.module('formService', ['ui.bootstrap'])
generator.get_diff_array = function (array1, array2) {
var result = [];
angular.forEach(array1, function (value, key) {
if (array2.indexOf(value) < 0) {
if (angular.toJson(array2).indexOf(value.value) < 0) {
result.push(value);
}
});
......@@ -889,8 +880,14 @@ angular.module('formService', ['ui.bootstrap'])
// scope.model can be reached via prototype chain
scope.model[formName] = data.forms.model.object_key;
// scope.form prototype chain returns this form item
scope.form.titleMap.push({value: data.forms.model.object_key, name: data.forms.model.unicode});
scope.form.selected_item = {value: data.forms.model.object_key, name: data.forms.model.unicode};
scope.form.titleMap.push({
value: data.forms.model.object_key,
name: data.forms.model.unicode
});
scope.form.selected_item = {
value: data.forms.model.object_key,
name: data.forms.model.unicode
};
scope.$watch(document.querySelector('input[name=' + scope.form.model_name + ']'),
function () {
angular.element(document.querySelector('input[name=' + scope.form.model_name + ']')).val(scope.form.selected_item.name);
......
This diff is collapsed.
......@@ -1462,10 +1462,11 @@ angular.module("shared/templates/foreignKey.html", []).run(["$templateCache", fu
$templateCache.put("shared/templates/foreignKey.html",
"<div class=\"form-group {{form.htmlClass}} schema-form-select col-md-12\"\n" +
" ng-class=\"{'has-error': form.disableErrorState !== true && hasError(), 'has-success': form.disableSuccessState !== true && hasSuccess(), 'has-feedback': form.feedback !== false}\">\n" +
" <div class=\"col-md-8\">\n" +
" <div class=\"col-md-12\">\n" +
" <label class=\"control-label {{form.labelHtmlClass}}\" ng-show=\"showTitle()\">\n" +
" {{form.title}}\n" +
" </label>\n" +
" <a><i class=\"fa fa-plus-circle fa-fw\" add-modal-for-linked-model=\"{{form.formName}}\"></i></a>\n" +
"\n" +
" <div class=\"form-group input-group\">\n" +
" <span class=\"input-group-btn\">\n" +
......@@ -1505,11 +1506,6 @@ angular.module("shared/templates/foreignKey.html", []).run(["$templateCache", fu
"\n" +
" <div class=\"help-block\" sf-message=\"form.description\"></div>\n" +
" </div>\n" +
" <div class=\"col-md-4\">\n" +
" <a href=\"javascript:void(0);\" add-modal-for-linked-model=\"{{form.formName}}\">\n" +
" <i class=\"fa fa-plus-circle fa-fw\"></i>\n" +
" </a>\n" +
" </div>\n" +
"</div>");
}]);
......@@ -1579,24 +1575,23 @@ angular.module("shared/templates/multiselect.html", []).run(["$templateCache", f
$templateCache.put("shared/templates/multiselect.html",
"<div class=\"form-group {{form.htmlClass}} schema-form-select col-md-12\"\n" +
" ng-class=\"{'has-error': form.disableErrorState !== true && hasError(), 'has-success': form.disableSuccessState !== true && hasSuccess(), 'has-feedback': form.feedback !== false}\">\n" +
" <div class=\"col-md-8\">\n" +
" <div class=\"col-md-12\">\n" +
" <label class=\"control-label {{form.labelHtmlClass}}\" ng-show=\"showTitle()\">\n" +
" {{form.title}}\n" +
" </label>\n" +
" <a><i class=\"fa fa-plus-circle fa-fw\" add-modal-for-linked-model=\"{{form.formName}}\"></i></a>\n" +
"\n" +
" <div class=\"row\">\n" +
" <div class=\"form-group input-group\">\n" +
" <div class=\"col-md-12\">\n" +
" <input type=\"text\"\n" +
" placeholder=\"{{form.title}} filtrele\"\n" +
" class=\"form-control {{form.fieldHtmlClass}}\"\n" +
" name=\"filter-interface\"\n" +
" ng-model=\"form.filterValue\"\n" +
" ng-keyup=\"form.appendFiltered(form.filterValue)\"\n" +
" />\n" +
" </div>\n" +
" ng-keyup=\"form.appendFiltered(form.filterValue)\"/>\n" +
" </div>\n" +
" <div class=\"row\">\n" +
" <div class=\"col-md-5\">\n" +
"\n" +
" <div class=\"col-md-12\">\n" +
" <label for=\"filterItems\">{{form.title}} Liste</label>\n" +
" <select ng-model=\"selectedItemsModel\"\n" +
" value=\"$$value$$\"\n" +
......@@ -1610,13 +1605,12 @@ angular.module("shared/templates/multiselect.html", []).run(["$templateCache", f
" </select>\n" +
" </div>\n" +
"\n" +
"\n" +
" <div class=\"col-md-1\">\n" +
" <a href=\"javascript:void(0)\" ng-click=\"form.select(selectedItemsModel)\"><i class=\"fa fa-arrow-right fa-fw\"></i></a><br>\n" +
" <a href=\"javascript:void(0)\" ng-click=\"form.deselect(selectedFilteredItemsModel)\"><i class=\"fa fa-arrow-left fa-fw\"></i></a>\n" +
" <div class=\"col-md-12 text-center\">\n" +
" <a><i class=\"fa fa-arrow-down fa-fw\" ng-click=\"form.select(selectedItemsModel)\"></i></a>\n" +
" <a><i class=\"fa fa-arrow-up fa-fw\" ng-click=\"form.deselect(selectedFilteredItemsModel)\"></i></a>\n" +
" </div>\n" +
"\n" +
" <div class=\"col-md-5\">\n" +
" <div class=\"col-md-12\">\n" +
" <label for=\"selectedItems\">Seçilenler</label>\n" +
" <select ng-model=\"selectedFilteredItemsModel\"\n" +
" value=\"$$value$$\"\n" +
......@@ -1633,11 +1627,11 @@ angular.module("shared/templates/multiselect.html", []).run(["$templateCache", f
"\n" +
" <div class=\"help-block\" sf-message=\"form.description\"></div>\n" +
" </div>\n" +
" <div class=\"col-md-4\">\n" +
" <a href=\"javascript:void(0);\" add-modal-for-linked-model>\n" +
" <i class=\"fa fa-plus-circle fa-fw\"></i>\n" +
" </a>\n" +
" </div>\n" +
" <!--<div class=\"col-md-4\">-->\n" +
" <!--<a href=\"javascript:void(0);\" add-modal-for-linked-model>-->\n" +
" <!--<i class=\"fa fa-plus-circle fa-fw\"></i>-->\n" +
" <!--</a>-->\n" +
" <!--</div>-->\n" +
"</div>");
}]);
......
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