Skip to content
This repository has been archived by the owner on Aug 27, 2024. It is now read-only.

Commit

Permalink
Merge pull request #64 from citizennet/fix-batch-edit-selectdisplay
Browse files Browse the repository at this point in the history
  • Loading branch information
jojordan3 authored Nov 30, 2021
2 parents 9ef8669 + fb1704b commit bdd1128
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 376 deletions.
108 changes: 7 additions & 101 deletions dist/all.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/all.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/all.min.js.map

Large diffs are not rendered by default.

108 changes: 7 additions & 101 deletions dist/test.js

Large diffs are not rendered by default.

113 changes: 4 additions & 109 deletions src/cn-flex-form.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const fieldPropHandlers = [{
}, {
prop: 'watch',
handler: (field, service, secondPass) =>
!secondPass &&field.watch && service.processFieldWatch(field)
!secondPass && field.watch && service.processFieldWatch(field)
}, {
prop: 'type',
handler: (field, service, secondPass) =>
Expand Down Expand Up @@ -191,8 +191,6 @@ function CNFlexFormService(
resolveNestedExpressions,
setArrayIndex,
setupConfig,
setupArraySelectDisplay,
setupSelectDisplay,
setupSchemaRefresh,
silenceListeners,
skipDefaults
Expand Down Expand Up @@ -1700,15 +1698,13 @@ function CNFlexFormService(
table.items.forEach(function(row) {
for (var i = 0; i < table.columns.length; i++) {
_.extend(row.items[i], table.columns[i]);
//if(row.columns[i].key) row.columns[i].key = ObjectPath.parse(row.columns[i].key);
service.processField(row.items[i]);
}
});
}

function processSelectDisplay(selectDisplay) {
const service = this;
const schema = service.getSchema(selectDisplay.key);
// Needed for batchform to check recursively
let selectField = null;
for (let item of selectDisplay.items) {
Expand All @@ -1722,13 +1718,6 @@ function CNFlexFormService(
}
}

return schema && schema.type === 'array' ?
service.setupArraySelectDisplay(selectDisplay, selectField) :
service.setupSelectDisplay(selectDisplay, selectField);
}

function setupArraySelectDisplay(selectDisplay, selectField) {
const service = this;
// band-aid because this is being set as an object instead of array somwhere
// deep in the angular or angular-schema-form nether-regions
const linkModel = service.parseExpression(selectDisplay.link, service.model);
Expand Down Expand Up @@ -1758,108 +1747,14 @@ function CNFlexFormService(
});
// handle legacy objects that don't have values set in the selectField
var model = service.parseExpression(service.getKey(selectDisplay.key), service.model).get();
_.each(selectDisplay.items, function(item) {
var key = service.getKey(item.key);
var selectKey = service.getKey(selectField.key);
if(key === selectKey) return;
_.each(model, function(elem, i) {
var indexedKey = service.setArrayIndex(key, i);
var splitIndexedKey = ObjectPath.parse(indexedKey);
var indexedSelectKey = service.setArrayIndex(selectKey, i);
var selectModel = service.parseExpression(indexedSelectKey, service.model);
var selectValue = selectModel.get();
var itemValue = service.parseExpression(indexedKey, service.model).get();
if(itemValue && !_.includes(selectValue, splitIndexedKey[splitIndexedKey.length - 1])) {
if(!selectValue) {
selectValue = [];
}
selectValue.push(splitIndexedKey[splitIndexedKey.length - 1]);
selectModel.set(selectValue);
}
});
});
// handle new objects with values set in defaults
var defaults = service.getSchema(selectDisplay.key).default;
_.each(defaults, function(elem, i) {
var selectKey = service.getKey(selectField.key);
var selectKey = service.getKey(selectField.key);
_.each(model, function(elem, i) {
var indexedSelectKey = service.setArrayIndex(selectKey, i);
var selectModel = service.parseExpression(indexedSelectKey, service.model);
var selectValue = selectModel.get();
_.each(elem, function(val, key) {
if(!selectValue) {
selectValue = [];
}
selectValue.push(key);
selectModel.set(selectValue);
});
if(!selectModel.get()) selectModel.set([]);
});
}

function setupSelectDisplay(selectDisplay, selectField) {
const service = this;
const selectFieldKey = service.getKey(selectField.key);

selectField.selectDisplayKey = selectDisplay.key;
let selectDisplayItems = _(selectDisplay.items)
.map(item => item.items || [item])
.flatten()
.value();

_.each(selectDisplayItems, item => {
if(item.selectField === true) return;

const key = _.isArray(item.key) ? item.key : ObjectPath.parse(item.key);
const featureKey = _.last(key);

item.showFeature = () => {
const features =
service
.parseExpression(`model.${selectFieldKey}`)
.get();
const show =
features &&
features
.includes(featureKey);
return show;
};

const condition = `form.showFeature()`;
item.condition = item.condition ?
`(${item.condition}) && ${condition}` : condition;
});
// handle legacy objects that don't have values set in the selectField
var selectKey = service.getKey(selectField.key);
var selectModel = service.parseExpression(selectKey, service.model);
var selectValue = selectModel.get();
_.each(selectDisplayItems, function(item) {
var key = service.getKey(item.key);
if(selectKey === key) return;
var splitKey = ObjectPath.parse(key);
var itemValue = service.parseExpression(key, service.model).get();
if(itemValue && !_.includes(selectValue, splitKey[splitKey.length - 1])) {
if(!selectValue) {
selectValue = [];
}
selectValue.push(splitKey[splitKey.length - 1]);
selectModel.set(selectValue);
}
});
// handle new objects with values set in the defaults
var defaults = service.getSchema(selectDisplay.key).default;
_.each(defaults, function(val, key) {
if(!selectValue) {
selectValue = [];
}
selectValue.push(key);
selectModel.set(selectValue);
});
// set default values here
var model = service.parseExpression(selectDisplay.key, service.model);
if(defaults && !model.get()) {
model.set(defaults);
}
}

function setupSchemaRefresh(refresh) {
const service = this;
service.refreshSchema = _.debounce(updateSchema => {
Expand Down
Loading

0 comments on commit bdd1128

Please sign in to comment.