Refresh

This website github-wiki-see.page/m/JackHu88/Comm/wiki/SharePoint-JSGrid is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

SharePoint JSGrid - JackHu88/Comm GitHub Wiki

https://chuvash.eu/2014/11/27/jsgrid-basics/

https://www.codeproject.com/Articles/813090/Master-detail-with-JSGrid

(function () {
    window.SP.SOD.executeOrDelayUntilScriptLoaded(function () {
        window.SP.GanttControl.WaitForGanttCreation(function (controller) {
            var days = {
                Jan: "-02-01",
                Feb: "-03-01",
                Mar: "-04-01",
                Apr: "-05-01",
                May: "-06-01",
                Jun: "-07-01",
                Jul: "-08-01",
                Aug: "-09-01",
                Sep: "-10-01",
                Oct: "-11-01",
                Nov: "-12-01",
                Dec: "-01-01",
            }

            for (var i = 0; i < ctx.ListSchema.Field.length; i++) {

                var field = ctx.ListSchema.Field[i];
                var currentYear = (new Date()).getFullYear();
                var editDate = (new Date()).setDate((new Date().getDate()) + 3);

                switch (field.FieldTitle) {
                    case "Year":
                        field.AllowGridEditing = false;
                        break;
                    default:
                        if (days[field.FieldTitle]) {

                            if (field.FieldTitle == "Dec") {
                                currentYear = currentYear + 1;
                            }

                            if (editDate > new Date(currentYear + days[field.FieldTitle])) {
                                field.AllowGridEditing = false;
                            }
                        }
                        break;
                }
            }

            controller.AttachRowChanged(function (recordkey) {
                
                var currentYear = (new Date()).format("yyyy");

                controller.ReadValue(recordkey, "Year", updateYear);

                function updateYear(exsit, result) {
  
                    if (exsit) {

                        if (result.hasLocalizedValue && result.localizedValue == currentYear) {
                            return;
                        }
                        else {
                            var updates = [];

                            updates.push(SP.JsGrid.CreateValidatedPropertyUpdate(recordkey, "Year", currentYear, currentYear));

                            controller.UpdateProperties(updates);
                        }
                    }
                }
            });
        });
    }, "spgantt.js");
})();