MCPcopy Create free account
hub / github.com/DHTMLX/scheduler / serialize

Function serialize

codebase/sources/dhtmlxscheduler.js:20736–20801  ·  view source on GitHub ↗
(scheduler2)

Source from the content-addressed store, hash-verified

20734 });
20735 }
20736 function serialize(scheduler2) {
20737 const getSerializableData = getSerializator(scheduler2);
20738 scheduler2.data_attributes = function() {
20739 var attrs = [];
20740 var format = scheduler2._helpers.formatDate;
20741 var all_events = getSerializableData();
20742 for (var a in all_events) {
20743 var ev = all_events[a];
20744 for (var name in ev)
20745 if (name.substr(0, 1) != "_")
20746 attrs.push([name, name == "start_date" || name == "end_date" ? format : null]);
20747 break;
20748 }
20749 return attrs;
20750 };
20751 scheduler2.toXML = function(header) {
20752 var xml = [];
20753 var attrs = this.data_attributes();
20754 var all_events = getSerializableData();
20755 for (var a in all_events) {
20756 var ev = all_events[a];
20757 xml.push("<event>");
20758 for (var i = 0; i < attrs.length; i++)
20759 xml.push("<" + attrs[i][0] + "><![CDATA[" + (attrs[i][1] ? attrs[i][1](ev[attrs[i][0]]) : ev[attrs[i][0]]) + "]]></" + attrs[i][0] + ">");
20760 xml.push("</event>");
20761 }
20762 return (header || "") + "<data>" + xml.join("\n") + "</data>";
20763 };
20764 scheduler2._serialize_json_value = function(value) {
20765 if (value === null || typeof value === "boolean") {
20766 value = "" + value;
20767 } else {
20768 if (!value && value !== 0) {
20769 value = "";
20770 }
20771 value = '"' + value.toString().replace(/\n/g, "").replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"';
20772 }
20773 return value;
20774 };
20775 scheduler2.toJSON = function() {
20776 return JSON.stringify(this.serialize());
20777 };
20778 scheduler2.toICal = function(header) {
20779 var start = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\nDESCRIPTION:";
20780 var end = "END:VCALENDAR";
20781 var format = scheduler2.date.date_to_str("%Y%m%dT%H%i%s");
20782 var full_day_format = scheduler2.date.date_to_str("%Y%m%d");
20783 var ical = [];
20784 var all_events = getSerializableData();
20785 for (var a in all_events) {
20786 var ev = all_events[a];
20787 ical.push("BEGIN:VEVENT");
20788 if (!ev._timed || !ev.start_date.getHours() && !ev.start_date.getMinutes())
20789 ical.push("DTSTART:" + full_day_format(ev.start_date));
20790 else
20791 ical.push("DTSTART:" + format(ev.start_date));
20792 if (!ev._timed || !ev.end_date.getHours() && !ev.end_date.getMinutes())
20793 ical.push("DTEND:" + full_day_format(ev.end_date));

Callers

nothing calls this directly

Calls 3

getSerializatorFunction · 0.70
serializeMethod · 0.65
date_to_strMethod · 0.65

Tested by

no test coverage detected