From d53ad3b5aa52d37e7ef2a8297a356871a86cd739 Mon Sep 17 00:00:00 2001 From: Phillip Hutchings Date: Mon, 16 Jan 2017 10:23:47 +1300 Subject: [PATCH 1/5] Fix the calendar control. Currently it cannot be changed after the initial value is set. This is because jQuery UI changed the event name and altered the dateParse code so that yyyy-mm-dd becomes 20102010-01-31 but yy-mm-dd is 2010-01-31 --- GridMvc.Site/Scripts/gridmvc.js | 42 ++++++++++++++++------------- GridMvc.Site/Scripts/gridmvc.min.js | 2 +- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/GridMvc.Site/Scripts/gridmvc.js b/GridMvc.Site/Scripts/gridmvc.js index b6ca50b..ab01b07 100644 --- a/GridMvc.Site/Scripts/gridmvc.js +++ b/GridMvc.Site/Scripts/gridmvc.js @@ -171,11 +171,12 @@ GridMvc = (function ($) { //determine widget container: var widgetContainer = $(this).find(".grid-popup-widget"); //onRender target widget - if (typeof (widget.onRender) != 'undefined') + if (typeof (widget.onRender) != 'undefined') { widget.onRender(widgetContainer, self.lang, columnType, filterDataObj, function (values) { self.closeOpenedPopups(); self.applyFilterValues(filterUrl, columnName, values, false); }, $.parseJSON(widgetData)); + } //adding 'clear filter' button if needed: if ($(this).find(".grid-filter-btn").hasClass("filtered") && widget.showClearFilterButton()) { var inner = $(this).find(".grid-popup-additional"); @@ -629,7 +630,10 @@ DateTimeFilterWidget = (function ($) { \ ' + (this.datePickerIncluded ? - '
' + '
\ +
\ + \ +
' : '
\ \ @@ -642,25 +646,27 @@ DateTimeFilterWidget = (function ($) { //if window.jQueryUi included: if (this.datePickerIncluded) { var datePickerOptions = this.data || {}; - datePickerOptions.format = datePickerOptions.format || "yyyy-mm-dd"; + datePickerOptions.format = datePickerOptions.format || "yy-mm-dd"; datePickerOptions.language = datePickerOptions.language || this.lang.code; + datePickerOptions.onSelect = function (date, ev) { + var type = $context.container.find(".grid-filter-type").val(); + var date = ev.input.datepicker("getDate"); + var newValue = $.datepicker.formatDate(datePickerOptions.format, date); + var filterValues = [{ filterType: type, filterValue: newValue }]; + $context.cb(filterValues); + } var $context = this; var dateContainer = this.container.find(".grid-filter-datepicker"); - dateContainer.datepicker(datePickerOptions).on('changeDate', function (ev) { - var type = $context.container.find(".grid-filter-type").val(); - //if (type == "1") { - // var tomorrow = new Date(ev.getTime()); - // tomorrow.setDate(ev.getDate() + 1); - // var filterValues = [{ filterType: type, filterValue: ev.format() }]; - //} - //else{ - var filterValues = [{ filterType: type, filterValue: ev.format() }]; - //} - $context.cb(filterValues); - }); - if (this.value.filterValue) - dateContainer.datepicker('update', this.value.filterValue); + dateContainer.datepicker(datePickerOptions); + if (this.value.filterValue) { + try { + var date = $.datepicker.parseDate("yy-mm-dd"); + if (date) { + dateContainer.datepicker('update', this.value.filterValue); + } + } catch (e) {} + } } }; @@ -733,4 +739,4 @@ BooleanFilterWidget = (function ($) { $(".grid-mvc").gridmvc(); }); }); -})(window.jQuery); \ No newline at end of file +})(window.jQuery); diff --git a/GridMvc.Site/Scripts/gridmvc.min.js b/GridMvc.Site/Scripts/gridmvc.min.js index 718a94b..1263d70 100644 --- a/GridMvc.Site/Scripts/gridmvc.min.js +++ b/GridMvc.Site/Scripts/gridmvc.min.js @@ -1 +1 @@ -window.pageGrids=window.pageGrids||{};$.fn.extend({gridmvc:function(){var n=[];return($(this).each(function(){if($(this).data("gridmvc"))n.push($(this).data("gridmvc"));else{var i={lang:$(this).attr("data-lang"),selectable:$(this).attr("data-selectable")=="true",multiplefilters:$(this).attr("data-multiplefilters")=="true"},t=new GridMvc(this,i),r=$(this).attr("data-gridname");r.length>0&&(window.pageGrids[$(this).attr("data-gridname")]=t);n.push(t);$(this).data("gridmvc",t)}}),n.length==1)?n[0]:n}});GridMvc=function(n){function t(t,i){this.jqContainer=n(t);i=i||{};this.options=n.extend({},this.defaults(),i);this.init()}return t.prototype.init=function(){this.lang=GridMvc.lang[this.options.lang];typeof this.lang=="undefined"&&(this.lang=GridMvc.lang.en);this.events=[];this.options.selectable&&this.initGridRowsEvents();this.filterWidgets=[];this.addFilterWidget(new TextFilterWidget);this.addFilterWidget(new NumberFilterWidget);this.addFilterWidget(new DateTimeFilterWidget);this.addFilterWidget(new BooleanFilterWidget);this.openedMenuBtn=null;this.initFilters()},t.prototype.initGridRowsEvents=function(){var n=this;this.jqContainer.on("click",".grid-row",function(){n.rowClicked.call(this,n)})},t.prototype.rowClicked=function(t){var i,r,u;t.options.selectable&&((i=n(this).closest(".grid-row"),i.length<=0)||(r={},i.find(".grid-cell").each(function(){var t=n(this).attr("data-name");t.length>0&&(r[t]=n(this).text())}),u=n.Event("RowClicked"),t.notifyOnRowSelect(r,u),u.isDefaultPrevented()||t.markRowSelected(i)))},t.prototype.markRowSelected=function(n){this.jqContainer.find(".grid-row.grid-row-selected").removeClass("grid-row-selected");n.addClass("grid-row-selected")},t.prototype.defaults=function(){return{selectable:!0,multiplefilters:!1,lang:"en"}},t.prototype.onRowSelect=function(n){this.events.push({name:"onRowSelect",callback:n})},t.prototype.notifyOnRowSelect=function(n,t){t.row=n;this.notifyEvent("onRowSelect",t)},t.prototype.notifyEvent=function(n,t){for(var i=0;i