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

Function serialize

codebase/sources/dhtmlxscheduler.es.js:20732–20797  ·  view source on GitHub ↗
(scheduler2)

Source from the content-addressed store, hash-verified

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