Просмотр исходного кода

added onSelect & disableDayFn options in calendar

G-Grand 9 лет назад
Родитель
Сommit
f0a48c550e
2 измененных файлов с 13 добавлено и 19 удалено
  1. 1 1
      include/nitro.hrl
  2. 12 18
      src/elements/element_calendar.erl

+ 1 - 1
include/nitro.hrl

@@ -85,7 +85,7 @@
 -record(checkbox,           {?ELEMENT_BASE(element_checkbox),  autofocus, checked=false, disabled, form, name, required, value}).
 -record(color,           {?ELEMENT_BASE(element_color),  autocomplete, autofocus, disabled, form, list, name, value}).
 -record(date,           {?ELEMENT_BASE(element_date),  autocomplete, autofocus, disabled, form, list, max, min, name, step, readonly, required, value}).
--record(calendar,       {?ELEMENT_BASE(element_calendar),  autocomplete, autofocus, disabled, form, list, maxDate, minDate, format, name, step, readonly, required, value, placeholder}).
+-record(calendar,       {?ELEMENT_BASE(element_calendar),  autocomplete, autofocus, disabled, form, list, maxDate, minDate, format, name, step, readonly, required, value, placeholder, onSelect, disableDayFn}).
 -record(datetime,           {?ELEMENT_BASE(element_datetime),  autocomplete, autofocus, disabled, form, list, max, min, name, step, readonly, required, value}).
 -record(datetime_local,           {?ELEMENT_BASE(element_datetime_local),  autocomplete, autofocus, disabled, form, list, max, min, name, step, readonly, required, value}).
 -record(email,           {?ELEMENT_BASE(element_email),  autocomplete, autofocus, disabled, form, list, maxlength, multiple, name, pattern, placeholder, readonly, required, size, value}).

+ 12 - 18
src/elements/element_calendar.erl

@@ -47,23 +47,15 @@ render_element(Record) ->
     ],
     wf_tags:emit_tag(<<"input">>, nitro:render(Record#calendar.body), List).
 
-init(Id,#calendar{minDate=Min,maxDate=Max,lang=Lang,format=Form,value=Value}) ->
+init(Id,#calendar{minDate=Min,maxDate=Max,lang=Lang,format=Form,value=Value,onSelect=SelectFn,disableDayFn=DisDayFn}) ->
     ID = nitro:to_list(Id),
-    I18n = case Lang of
-               undefined -> "clLangs.ua";
-               Lang -> "clLangs."++nitro:to_list(Lang) end,
-    Format = case Form of
-                 undefined -> "YYYY-MM-DD";
-                 Form -> Form end,
-    DefaultDate = case Value of
-                      {Yv,Mv,Dv} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Yv),nitro:to_list(Mv-1),nitro:to_list(Dv)]);
-                      _ -> "null" end,
-    MinDate = case Min of
-                  {Y,M,D} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y),nitro:to_list(M-1),nitro:to_list(D)]);
-                  _ -> "new Date(2000, 0, 1)" end,
-    MaxDate = case Max of
-                  {Y1,M1,D1} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y1),nitro:to_list(M1-1),nitro:to_list(D1)]);
-                  _ -> "new Date(2087, 4, 13)" end,
+    I18n =        case Lang  of undefined  -> "clLangs.ua"; Lang -> "clLangs."++nitro:to_list(Lang) end,
+    Format =      case Form  of undefined  -> "YYYY-MM-DD"; Form -> Form end,
+    DefaultDate = case Value of {Yv,Mv,Dv} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Yv),nitro:to_list(Mv-1),nitro:to_list(Dv)]);  _ -> "null" end,
+    MinDate =     case Min   of {Y,M,D}    -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y), nitro:to_list(M-1), nitro:to_list(D)]);   _ -> "new Date(2000, 0, 1)" end,
+    MaxDate =     case Max   of {Y1,M1,D1} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y1),nitro:to_list(M1-1),nitro:to_list(D1)]);  _ -> "new Date(2087, 4, 13)" end,
+    OnSelect =    case SelectFn of undefined -> "null"; _ -> SelectFn end,
+    DisDay =      case DisDayFn of undefined -> "null"; _ -> nitro:f("function(thisDate){return ~s(thisDate);}",[DisDayFn]) end,
     nitro:wire(nitro:f(
         "pickers['~s'] = new Pikaday({
             field: document.getElementById('~s'),
@@ -73,7 +65,9 @@ init(Id,#calendar{minDate=Min,maxDate=Max,lang=Lang,format=Form,value=Value}) ->
             setDefaultDate: true,
             minDate: ~s,
             maxDate: ~s,
-            format: '~s'
+            format: '~s',
+            onSelect: ~s,
+            disableDayFn: ~s
         });",
-        [ID,ID,I18n,DefaultDate,MinDate,MaxDate,Format]
+        [ID,ID,I18n,DefaultDate,MinDate,MaxDate,Format,OnSelect,DisDay]
     )).