@cgignite/ignite-odata
Version:
Odata Connector CG Ignite
134 lines (127 loc) • 5.76 kB
HTML
<script type="text/javascript">
var _maxModel = 20;
RED.nodes.registerType('edm', {
category: 'config',
defaults: {
namespace: { value: "ignite", required: true },
schema: { required: false },
entities: { type: "entity", required: false },
model1: { required: false },
model2: { required: false },
model3: { required: false },
model4: { required: false },
model5: { required: false },
model6: { required: false },
model7: { required: false },
model8: { required: false },
model9: { required: false },
model10: { required: false },
model11: { required: false },
model12: { required: false },
model13: { required: false },
model14: { required: false },
model15: { required: false },
model16: { required: false },
model17: { required: false },
model18: { required: false },
model19: { required: false },
model20: { required: false },
},
label: function () {
return "edm:" + this.namespace;
},
oneditprepare: function () {
var node = this;
var model = [];
for (var index = 1; index <= _maxModel; index++) {
if (this["model" + index]) {
model.push(this["model" + index]);
}
}
this._resize = function () {
var rows = $("#node-config-dialog-edit-form>div:not(.node-input-target-list-row)");
var height = $("#node-config-dialog-edit-form").height();
for (var i = 0; i < rows.length; i++) {
height -= $(rows[i]).outerHeight(true);
}
var editorRow = $("#node-config-dialog-edit-form>div.node-input-target-list-row");
editorRow.css("height", height + "px");
};
var dirList = $("#node-input-edm-target-container-div").css({ width: "100%", height: "100%" })
.treeList({ multi: true }).on("treelistitemmouseover", function (e, item) {
}).on("treelistitemmouseout", function (e, item) {
});
$("#node-config-input-entities").on("change", function (e, item) {
var items = [];
var nodeItemMap = {};
RED.nodes.eachConfig(function (n) {
if (n.type == "entity") {
var isChecked = model.indexOf(n.id) !== -1;
nodeItemMap[n.id] = {
node: n,
label: n.name,
sublabel: n.type,
selected: isChecked
};
items.push(nodeItemMap[n.id]);
}
});
dirList.treeList('data', items);
});
},
oneditsave: function () {
var model = $("#node-input-edm-target-container-div").treeList('selected').map(function (i) { return i.node.id });
for (var index = 1; index <= _maxModel; index++) {
if (index <= model.length) {
$("#node-config-input-model" + index).val(model[index - 1]);
}
else {
$("#node-config-input-model" + index).val("_ADD_");
}
}
$("#node-config-input-entities").val("_ADD_");
},
oneditresize: function (size) {
this._resize();
}
});
</script>
<script type="text/html" data-template-name="edm">
<div class="form-row">
<label for="node-config-input-namespace"><i class="fa fa-bookmark"></i> Namespace</label>
<input type="text" id="node-config-input-namespace">
</div>
<div class="form-row">
<label for="node-config-input-schema"><i class="fa fa-bookmark"></i> Schema</label>
<input type="text" id="node-config-input-schema">
</div>
<div class="form-row">
<label for="node-config-input-entities"><i class="fa fa-bookmark"></i> Entity</label>
<input type="text" id="node-config-input-entities">
</div>
<div class="form-row node-input-target-row node-input-target-list-row" style="min-height: 100px">
<div id="node-input-edm-target-container-div"></div>
</div>
<div style='display:none;height:0'>
<input type="text" id="node-config-input-model1">
<input type="text" id="node-config-input-model2">
<input type="text" id="node-config-input-model3">
<input type="text" id="node-config-input-model4">
<input type="text" id="node-config-input-model5">
<input type="text" id="node-config-input-model6">
<input type="text" id="node-config-input-model7">
<input type="text" id="node-config-input-model8">
<input type="text" id="node-config-input-model9">
<input type="text" id="node-config-input-model10">
<input type="text" id="node-config-input-model11">
<input type="text" id="node-config-input-model12">
<input type="text" id="node-config-input-model13">
<input type="text" id="node-config-input-model14">
<input type="text" id="node-config-input-model15">
<input type="text" id="node-config-input-model16">
<input type="text" id="node-config-input-model17">
<input type="text" id="node-config-input-model18">
<input type="text" id="node-config-input-model19">
<input type="text" id="node-config-input-model20">
</div>
</script>