Skip to main content
Known Participant
October 19, 2023
Question

How to create Calendar component using Card layout and display the Attendance marked, Leaves taken and current date in different color coding?

  • October 19, 2023
  • 5 replies
  • 12 views

I have created a sample code, where the current date is being displayed in specific color, but I am facing an issue while selecting the date. Once the date is selected I am getting the issue mentioned below. 

The calendar display

The calendar after selection of date  :

The calendar display after selecting month:

5 replies

stefanhelzle0001
Brainy
October 19, 2023

Without any details, the only thing I can say is, that there seems to be a problem in the logic of how you determine the style for these card layouts.

https://stackoverflow.com/help/how-to-ask

codeblog.jonskeet.uk/.../

Known Participant
October 21, 2023

Hi Stefan,

Sorry for my delayed response. Here are the code snippet I am using.

a!localVariables(
local!monthnames: {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"},
local!week: {"S","M","T","W","T","F","S"},
local!month: month(today()),
local!year: year(today()),
local!blank: a!forEach(
items: enumerate(
weekday(date(local!year, local!month, 1)) - 1
),
expression: " "
),
local!dates: append(
local!blank,
enumerate(daysinmonth(local!month, local!year)) + 1
),
local!select,

{
a!sectionLayout(
label: "",
contents: {
/*a!cardLayout(*/
/*contents: {*/
/*a!richTextDisplayField(*/
/*labelPosition: "COLLAPSED",*/
/*value: {*/
/*a!richTextItem(*/
/*text: {*/
/*a!richTextIcon(*/
/*icon: "calendar"*/
/*),*/
/*"CALENDAR"*/
/*},*/
/*color: "ACCENT",*/
/*size: "LARGE",*/
/*style: {*/
/*"EMPHASIS"*/
/*}*/
/*)*/
/*},*/
/*preventWrapping: false,*/
/*align: "CENTER",*/
/*marginAbove: "STANDARD",*/
/*marginBelow: "STANDARD"*/
/*)*/
/*},*/
/*height: "AUTO",*/
/*style: "#efefef",*/
/*shape: "",*/
/*marginBelow: "STANDARD",*/
/*showBorder: false,*/
/*showShadow: true*/
/*),*/
a!cardLayout(
contents: {
a!columnsLayout(
columns: {
a!columnLayout(
contents: {
a!richTextDisplayField(
labelPosition: "ABOVE",
value:
a!richTextItem(
text: local!monthnames[local!month] & ", " & local!year,
color: "STANDARD",
size: "MEDIUM",
style: "STRONG"
),
align: "CENTER",
marginAbove: "STANDARD"

)
}
),
a!columnLayout(
contents: {
a!cardLayout(
contents: {
a!dropdownFieldByIndex(
label: "Months",
labelPosition: "ABOVE",
placeholder: "Select Month",
choiceLabels: {local!monthnames},
value: local!month,
saveInto: {
local!month,
a!save(
local!blank,
a!forEach(
items: enumerate(weekday(1 / local!month / local!year, 1)),
expression: " "
)
),
a!save(local!dates, null()),
a!save(
local!dates,
append(
local!blank,
enumerate(daysinmonth(local!month, local!year)) + 1
)
)
},
searchDisplay: "AUTO",
validations: {}
)

},
height: "AUTO",
style: "TRANSPARENT",
marginBelow: "STANDARD"
)
}
),
a!columnLayout(
contents: {
a!cardLayout(
contents: {
a!dropdownField(
label: "Year",
labelPosition: "ABOVE",
placeholder: "Select Year",
choiceLabels: 1950 + enumerate(local!year),
choiceValues: 1950 + enumerate(local!year),
value: local!year,
saveInto: {
local!year,
a!save(
local!blank,
a!forEach(
items: enumerate(weekday(1 / local!month / local!year, 1)),
expression: " "
)
),
a!save(local!dates, null()),
a!save(
local!dates,
append(
local!blank,
enumerate(daysinmonth(local!month, local!year)) + 1
)
)
},
searchDisplay: "AUTO",
validations: {}
)
},
height: "AUTO",
style: "TRANSPARENT",
marginBelow: "STANDARD"
)
}
)
}
)
},
height: "AUTO",
style: "TRANSPARENT",
marginBelow: "STANDARD"
),
a!cardLayout(
contents: {
a!columnsLayout(
columns: {
a!forEach(
items: enumerate(length(local!week)) + 1,
expression: a!columnLayout(
contents: a!cardLayout(
contents: a!richTextDisplayField(
labelPosition: "ABOVE",
value:{
if(
(fv!item = 1),
a!richTextItem(
text: index(local!week, fv!item, ""),
color: "NEGATIVE",
size: "STANDARD",
style: "STRONG"
),
(if((fv!item = 7),
a!richTextItem(
text: index(local!week, fv!item, ""),
color: "ACCENT",
size: "MEDIUM",
style: "STRONG"
),
a!richTextItem(
text: index(local!week, fv!item, ""),
size: "MEDIUM",
style: "STRONG"
)
)
)
)
},
align: "CENTER"

),
shape: "ROUNDED",
showShadow: true()
)
)
)
}
)

},
height: "AUTO",
style: "TRANSPARENT",
marginBelow: "STANDARD"
)
}
),
a!cardLayout(
contents: {
a!forEach(
items: enumerate(
if(
mod(length(local!dates), 7) = 0,
quotient(length(local!dates), 7),
sum(quotient(length(local!dates), 7) + 1)
),

),
expression: a!columnsLayout(
columns: {

a!forEach(
items: (fv!item - 1) * 7 + enumerate(7) + 8,
expression: a!columnLayout(
contents: a!cardLayout(
contents: if(
index(local!dates, fv!item, " ") = " ",
a!richTextDisplayField(
value: a!richTextItem(
text: index(local!dates, fv!item, ""),
size: "SMALL"
),
align: "CENTER"
),
a!richTextDisplayField(
value: a!richTextItem(
text: index(local!dates, fv!item, ""),
size: "SMALL"
),
align: "CENTER"
)
),
showBorder: index(local!dates, fv!item, " ") <> " ",
link: if(
index(local!dates, fv!item, " ") = " ",
null(),
a!dynamicLink(
value: index(local!dates, fv!item, " "),
saveInto: {local!select,
a!save(local!dates,date(local!year,local!month,tointeger(local!select)))
}
)
),
shape: "ROUNDED",
style: if(
a!isNotNullOrEmpty(local!select),
"ACCENT",
if(
and(index(local!dates,fv!item, " ") = day(today()),
local!month = month(today()),
local!year = year(today())),
"SUCCESS",
"NONE"
)
)
)
),
)
},
)
)
},
height: "AUTO",
style: "TRANSPARENT",
marginBelow: "STANDARD"
)
})

stefanhelzle0001
Brainy
October 21, 2023

Using the "Insert Code" function makes that much more readable.

This snippet seems suspicious. Any selection makes that field style "ACCENT".

style: if(
  a!isNotNullOrEmpty(local!select),
  "ACCENT",
  if(
    and(
      index(local!dates,fv!item, " ") = day(today()),
      local!month = month(today()),
      local!year = year(today())
    ),
    "SUCCESS",
    "NONE"
  )
)