'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _cloneDeep = require('lodash/cloneDeep');
var _cloneDeep2 = _interopRequireDefault(_cloneDeep);
var _uxcoreConst = require('uxcore-const');
var _uxcoreConst2 = _interopRequireDefault(_uxcoreConst);
var _util = require('./util');
var _util2 = _interopRequireDefault(_util);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* add some specific value for each row data which will be used in manipulating data & rendering.
* used in record API.
*/
function addJSXIdsForRecord(obj) {
var me = this;
var objAux = (0, _cloneDeep2['default'])(obj);
Eif (objAux instanceof Array) {
objAux = objAux.map(function (item) {
var newItem = (0, _cloneDeep2['default'])(item);
Eif (newItem.jsxid === undefined || newItem.jsxid == null) {
me.uid += 1;
newItem.jsxid = me.uid;
}
Eif (!newItem.__mode__) {
newItem.__mode__ = _uxcoreConst2['default'].MODE.EDIT;
}
return newItem;
});
} else {
me.uid += 1;
objAux.jsxid = me.uid;
}
return objAux;
}
/**
* add some specific value for each row data which will be used in manipulating data & rendering.
* used in method fetchData
*/
function addValuesInData(objAux) {
if (!objAux || !objAux.datas && !objAux.data) return null;
var me = this;
var data = objAux.datas || objAux.data;
for (var i = 0; i < data.length; i++) {
var node = data[i];
node.jsxid = me.uid;
me.uid += 1;
node.__mode__ = node.__mode__ || _uxcoreConst2['default'].MODE.VIEW;
node.__treeId__ = objAux.__treeId__ ? objAux.__treeId__ + '-' + i : '' + i;
me.addValuesInData(node);
}
return objAux;
}
/**
* insert some data into this.state.data & this.data
* @param objAux {Array or Object} datum or data need to be inserted
*/
function insertRecords(obj, cb) {
Iif ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') return;
var me = this;
var objAux = (0, _cloneDeep2['default'])(obj);
Eif (!(objAux instanceof Array)) {
objAux = [objAux];
}
objAux = me.addJSXIdsForRecord(objAux);
var content = _util2['default'].mergeData(me.state.data, objAux);
me.data = content;
me.setState({
data: content
}, function () {
Eif (cb) {
cb();
}
});
}
/**
* update this.state.data using obj by jsxid
* @param {object/array} obj
*/
function updateRecord(obj, cb) {
var stateData = (0, _cloneDeep2['default'])(this.state.data);
Iif (!stateData) {
return;
}
var objAux = (0, _cloneDeep2['default'])(obj);
if (!(objAux instanceof Array)) {
objAux = [objAux];
}
Eif (stateData.data || stateData.datas) {
var data = stateData.data || stateData.datas;
objAux.forEach(function (item) {
for (var i = 0; i < data.length; i++) {
Eif (data[i].jsxid === item.jsxid) {
data[i] = item;
break;
}
}
});
Eif (stateData.data) {
stateData.data = data;
} else if (stateData.datas) {
stateData.datas = data;
}
}
this.setState({
data: stateData
}, function () {
Eif (cb) {
cb();
}
});
}
/**
* update this.state.data & this.data using obj by jsxid
* @param {objtct/array} obj
*/
function syncRecord(obj, cb) {
var me = this;
var data = me.data.data || me.data.datas;
var objAux = (0, _cloneDeep2['default'])(obj);
if (!(objAux instanceof Array)) {
objAux = [objAux];
}
me.updateRecord(objAux, function () {
var stateData = (0, _cloneDeep2['default'])(me.state.data.data || me.state.data.datas);
objAux.forEach(function (item) {
for (var i = 0; i < stateData.length; i++) {
var element = stateData[i];
Eif (element.jsxid === item.jsxid) {
data[i] = element;
break;
}
}
});
if (cb) {
cb();
}
});
}
/**
* remove some items from this.state.data & this.data
* @param {object/array} obj items to be removed
*/
function removeRecords(obj, cb) {
var me = this;
var content = (0, _cloneDeep2['default'])(me.state.data);
var data = content.data || content.datas;
var objAux = (0, _cloneDeep2['default'])(obj);
Eif (Object.prototype.toString.call(objAux) !== '[object Array]') {
objAux = [objAux];
}
objAux.forEach(function (item) {
for (var i = 0; i < data.length; i++) {
var element = data[i];
Eif (element.jsxid === item.jsxid) {
data.splice(i, 1);
break;
}
}
});
me.data = content;
this.setState({
data: content
}, function () {
Eif (cb) {
cb();
}
});
}
exports['default'] = {
addJSXIdsForRecord: addJSXIdsForRecord,
addValuesInData: addValuesInData,
insertRecords: insertRecords,
updateRecord: updateRecord,
syncRecord: syncRecord,
removeRecords: removeRecords
};
module.exports = exports['default'];
|