Commit 729465f3 authored by Vladimir Baranov's avatar Vladimir Baranov

Fix merge conflicts when merge feature/fix-list-node-view

parents 2d8da571 f7bca06b
......@@ -142,8 +142,10 @@ module.exports = function (grunt) {
"app/components/version/version.js",
"app/components/version/interpolate-filter.js",
"app/components/version/version-directive.js",
"app/components/messaging/*.js"
"app/components/messaging/messaging_service.js",
"app/components/messaging/messaging.js"
],
nonull: true,
dest: 'dist/app.js'
},
components: {
......@@ -199,7 +201,8 @@ module.exports = function (grunt) {
'app/shared/directives.js',
'app/components/**/*controller.js',
'app/components/**/*service.js',
'app/components/messaging/*.js',
"app/components/messaging/messaging_service.js",
"app/components/messaging/messaging.js"
],
dest: 'dist/<%= grunt.branchname %>/app.js'
},
......@@ -323,7 +326,7 @@ module.exports = function (grunt) {
dev: {
files: {
'app/index.html': 'app/main.html',
'app/app.js': 'app/main.js',
'app/app.js': 'app/main.js'
}
},
prod: {
......
......@@ -515,6 +515,7 @@ angular.module('ulakbus.crud', ['schemaForm', 'ui.bootstrap', 'ulakbus.formServi
$scope.prepareTimetable = function prepareTimetable(timetable){
var grouped = groupBy(timetable, "saat");
for (var day in grouped){
if (!grouped.hasOwnProperty(day)) continue;
var dayItems = grouped[day];
grouped[day] = dayItems.sort(function(a, b){
return a.gun < b.gun ? -1 : 1;
......
......@@ -19,7 +19,11 @@
</label>
</th>
<th scope="row" style="text-align:center">#</th>
<<<<<<< 6a71c6920efc5235eff71bf42763b82cc30f1827
<th ng-repeat="prop in node.schema.properties_list">
=======
<th ng-repeat="propName in node.form" ng-init="prop = node.schema.properties[propName]">
>>>>>>> FIX, rfix#5379. Fix ListNode's dose not respect schema order
<span ng-if="!value.verbose_name">{{prop.title||prop.name}}</span>
</th>
<th ng-if="meta.allow_actions!==false">İşlem</th>
......@@ -42,14 +46,14 @@
</td>
</tr>
<tr ng-repeat="listnodemodel in node.items track by $index" ng-init="outerIndex=$index" ng-if="node.schema.formType=='ListNode'">
<tr ng-repeat="listnodemodel in node.items" ng-init="outerIndex=$index" ng-if="node.schema.formType=='ListNode'">
<td ng-if="meta.allow_selection===true" width="60">
<label>
<input type="checkbox" style="zoom:1.5; margin:5px 0 0 8px;">
</label>
</td>
<th scope="row" style="text-align:center">{{$index+1}}</th>
<td ng-repeat="propName in node.form" ng-init="k = propName; v = listnodemodel[propName]; inline = node.schema.inline_edit && node.schema.inline_edit.indexOf(k) > -1">
<td ng-repeat="prop in node.schema.properties_list" ng-init="k = prop.name; v = listnodemodel[k]; inline = node.schema.inline_edit && node.schema.inline_edit.indexOf(k) > -1">
<span ng-if="!inline">{{ v.unicode || v }}</span>
<!--<input type="{{node.schema.properties[k].type}}"-->
<!--ng-if="node.schema.inline_edit.indexOf(k) > -1"-->
......
......@@ -146,7 +146,7 @@ angular.module("ulakbus.messaging")
});
}
this.createDirectChannel = function(user){
iScope.createDirectChannel = function (user){
// user format is ['username', 'key', 'avatarUrl']
var key = user[1];
MessagingService.create_direct_channel(key)
......@@ -155,8 +155,6 @@ angular.module("ulakbus.messaging")
})
};
iScope.createDirectChannel = this.createDirectChannel;
iScope.hideApp = function(){
iScope.chatAppIsHidden = true;
MessagingService.toggle_messaging_window_visibility(false);
......
......@@ -32,7 +32,6 @@
<!-- @if NODE_ENV == 'PRODUCTION' -->
<link rel="stylesheet" href="css/app.css">
<link rel="stylesheet" href="css/roboto/roboto.css">
<link rel="stylesheet" href="css/jquery-ui.min.css">
<!-- @endif -->
</head>
<body ng-controller="KeyListenController" ng-keydown="down($event)">
......@@ -147,7 +146,6 @@
<!-- @if NODE_ENV == 'PRODUCTION' -->
<script src="bower_components/jquery.min.js"></script>
<script src="bower_components/jquery-ui.min.js"></script>
<script src="bower_components/angular.js"></script>
<script src="bower_components/components.js"></script>
<script src="shared/translations.js"></script>
......
......@@ -29,7 +29,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
* @name Generator
* @description form service's Generator factory service handles all generic form operations
*/
.factory('Generator', function ($http, $q, $timeout, $sce, $location, $route, $compile, $log, RESTURL, $rootScope, Moment, WSOps, FormConstraints, $uibModal, $filter) {
.factory('Generator', function ($http, $q, $timeout, $sce, $location, $route, $compile, $log, RESTURL, $rootScope, Moment, WSOps, FormConstraints, $uibModal, $filter, Utils) {
var generator = {};
/**
* @memberof ulakbus.formService
......@@ -288,7 +288,6 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
* @returns scope {Object}
*/
generator.prepareFormItems = function (scope) {
angular.forEach(scope.form, function (value, key) {
......@@ -397,6 +396,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
form: [],
schema: {
properties: {},
properties_list: [],
required: [],
title: v.title,
type: "object",
......@@ -419,6 +419,11 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
angular.forEach(v.schema, function (item) {
scope[v.type][k].schema.properties[item.name] = angular.copy(item);
// save properties order in schema
if (item.name != 'idx'){
scope[v.type][k].schema.properties_list.push(scope[v.type][k].schema.properties[item.name]);
}
if (angular.isDefined(item.wf)) {
scope[v.type][k].schema.properties[item.name]['wf'] = angular.copy(item.wf);
}
......@@ -445,40 +450,39 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
});
$timeout(function () {
if (v.type != 'ListNode') return;
// todo: needs refactor
if (v.type === 'ListNode') {
scope[v.type][k].items = angular.copy(scope.model[k] || []);
angular.forEach(scope[v.type][k].items, function (value, key) {
if (value.constructor === Object) {
angular.forEach(value, function (x, y) {
var list = scope[v.type][k];
list.items = angular.copy(scope.model[k] || []);
angular.forEach(list.items, function (node, fieldName) {
if (!Object.keys(node).length) return;
angular.forEach(node, function (prop, propName) {
var propInSchema = list.schema.properties[propName];
try {
if (scope[v.type][k].schema.properties[y].type === 'date') {
scope[v.type][k].items[key][y] = generator.dateformatter(x);
scope[v.type][k].model[key][y] = generator.dateformatter(x);
if (propInSchema.type === 'date') {
node[propName] = generator.dateformatter(prop);
list.model[fieldName][propName] = generator.dateformatter(prop);
}
if (scope[v.type][k].schema.properties[y].type === 'select') {
scope[v.type][k].items[key][y] = generator.item_from_array(x.toString(), scope[v.type][k].schema.properties[y].titleMap)
if (propInSchema.type === 'select') {
node[propName] = generator.item_from_array(prop.toString(), list.schema.properties[propName].titleMap)
}
if (propInSchema.titleMap){
node[propName] = {
key: prop,
unicode: generator.item_from_array(prop, propInSchema.titleMap)
};
}
} catch (e) {
$log.debug('Field is not date');
}
});
}
});
}
});
// todo: check this place to fix 'keys instead of names' bug
if (scope.model[k]) {
angular.forEach(scope.model[k], function (value, key) {
angular.forEach(value, function (y, x) {
if (y.constructor === Object) {
scope.model[k][key][x] = y.key;
}
});
});
}
scope.model[k] = scope.model[k] || [];
......@@ -516,6 +520,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
var modelItems = [];
var modelKeys = [];
angular.forEach(scope.model[k], function (value, mkey) {
modelItems.push({
"value": value[v.schema[0].name].key,
......@@ -895,8 +900,6 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
formitem.titleMap = data;
formitem.gettingTitleMap = false;
});
}
};
......@@ -912,8 +915,8 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
object_id: scope.model[k],
cmd: 'object_name'
}
})
.then(function (data) {
}).then(function (data) {
try {
$timeout(function () {
document.querySelector('input[name=' + k + ']').value = data.object_name;
......@@ -949,6 +952,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
// "val_msg": "Erkek kardes sayisi kiz kardes sayisindan az olamaz."
// }
// };
angular.forEach(scope.schema.properties, function (v, k) {
// generically change _id fields model value
if ('form_params' in scope) {
......@@ -958,7 +962,6 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
return;
}
}
try {
generate_fields[v.type][v.widget || 'default'](scope, v, k);
}
......@@ -1340,7 +1343,6 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
* @todo diff for all submits to recognize form change. if no change returns to view with no submit
*/
generator.submit = function ($scope, redirectTo, dontProcessReply) {
/**
* In case of unformatted date object in any key recursively, it must be converted.
* @param model
......@@ -1404,7 +1406,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
* @param {Object} $route
* @returns {Object} returns value for modal
*/
.controller('ModalController', function ($scope, $uibModalInstance, Generator, items) {
.controller('ModalController', function ($scope, $uibModalInstance, Generator, items, $timeout, Utils) {
angular.forEach(items, function (value, key) {
$scope[key] = items[key];
});
......@@ -1414,6 +1416,17 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
});
$scope.$on('modalFormLocator', function (event) {
// fix default model with unicode assign
$timeout(function () {
Utils.iterate($scope.model, function(modelValue, k){
if (angular.isUndefined($scope.edit)) return;
var unicode = $scope.items[$scope.edit][k].unicode;
if (unicode){
document.querySelector('input[name=' + k + ']').value = unicode;
}
})
});
$scope.linkedModelForm = event.targetScope.linkedModelForm;
});
......@@ -1455,7 +1468,7 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
* @returns {Object} openmodal directive
*/
.directive('modalForNodes', function ($uibModal, Generator) {
.directive('modalForNodes', function ($uibModal, Generator, Utils) {
return {
link: function (scope, element, attributes) {
element.on('click', function () {
......@@ -1539,12 +1552,11 @@ angular.module('ulakbus.formService', ['ui.bootstrap'])
angular.forEach(childmodel.form, function (v, k) {
if (v.formName === key) {
//if (!childmodel.model[key].key) {
function indexInTitleMap(element, index, array) {
var unicodeValue = v.titleMap.find(function (element, index, array) {
if (element['value'] === value) {
return element;
}
}
var unicodeValue = v.titleMap.find(indexInTitleMap);
});
if (unicodeValue){
unicodeValue = unicodeValue.name;
reformattedModel[key] = {
......
......@@ -194,7 +194,7 @@ angular.module('ulakbus')
}
do_action(msg_data, msg_data.cmd);
if (msg_data.msg != "pong"){
$log.info("MESSAGE:", event, "Data:", msg_data);
$log.info("MESSAGE:", event, "Data:", angular.copy(msg_data));
}
};
wsOps.onError = function (evt) {
......
......@@ -64,4 +64,30 @@ angular.module("ulakbus")
}
}
}
/**
* @param collection {Array|Object} Array of objects to group
* @param callback {Function} Callback to apply to every element of the collection
* @returns None
*/
this.iterate = function(collection, callback){
angular.forEach(collection, function(val, key){
// don't iterate over angular binding indexes
if (key.indexOf && key.indexOf('$$') == 0){
return;
}
callback(val, key);
})
}
})
.filter("formatJson", function(){
return function(val){
try {
return JSON.stringify(val, null, 4);
} catch(e){
return val;
}
}
});
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