forked from github/plane
d3b73dc32f
* feat: manual ordering for issues in kanban * refactor: issues folder structure * refactor: modules and states folder structure * refactor: datepicker code * fix: create issue modal bug * feat: custom progress bar added * refactor: created global component for kanban board * refactor: update cycle and module issue create * refactor: return modules created * refactor: integrated global kanban view everywhere * refactor: integrated global list view everywhere * refactor: removed unnecessary api calls * refactor: update nomenclature for consistency * refactor: global select component for issue view * refactor: track cycles and modules for issue * fix: tracking new cycles and modules in activities * feat: segregate api token workspace * fix: workpsace id during token creation * refactor: update model association to cascade on delete * feat: sentry integrated (#235) * feat: sentry integrated * fix: removed unnecessary env variable * fix: update remirror description to save empty string and empty paragraph (#237) * Update README.md * fix: description and comment_json default value to remove warnings * feat: link option in remirror (#240) * feat: link option in remirror * fix: removed link import from remirror toolbar * feat: module and cycle settings under project * fix: module issue assignment * fix: module issue updation and activity logging * fix: typo while creating module issues * fix: string comparison for update operation * fix: ui fixes (#246) * style: shortcut command label bg color change * sidebar shortcut ui fix --------- Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia1001@gmail.com> * fix: update empty passwords to hashed string and add hashing for magic sign in * refactor: remove print logs from back migrations * build(deps): bump django in /apiserver/requirements Bumps [django](https://github.com/django/django) from 3.2.16 to 3.2.17. - [Release notes](https://github.com/django/django/releases) - [Commits](https://github.com/django/django/compare/3.2.16...3.2.17) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * feat: cycles and modules toggle in settings, refactor: folder structure (#247) * feat: link option in remirror * fix: removed link import from remirror toolbar * refactor: constants folder * refactor: layouts folder structure * fix: issue view context * feat: cycles and modules toggle in settings --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: pablohashescobar <nikhilschacko@gmail.com> Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com> Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia1001@gmail.com> Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Co-authored-by: pablohashescobar <118773738+pablohashescobar@users.noreply.github.com> Co-authored-by: sphynxux <122926002+sphynxux@users.noreply.github.com> Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
export const renderDateFormat = (date: string | Date | null) => {
|
|
if (!date) return "N/A";
|
|
|
|
var d = new Date(date),
|
|
month = "" + (d.getMonth() + 1),
|
|
day = "" + d.getDate(),
|
|
year = d.getFullYear();
|
|
|
|
if (month.length < 2) month = "0" + month;
|
|
if (day.length < 2) day = "0" + day;
|
|
|
|
return [year, month, day].join("-");
|
|
};
|
|
|
|
export const renderShortNumericDateFormat = (date: string | Date) =>
|
|
new Date(date).toLocaleDateString("en-UK", {
|
|
day: "numeric",
|
|
month: "short",
|
|
});
|
|
|
|
export const findHowManyDaysLeft = (date: string | Date) => {
|
|
const today = new Date();
|
|
const eventDate = new Date(date);
|
|
const timeDiff = Math.abs(eventDate.getTime() - today.getTime());
|
|
return Math.ceil(timeDiff / (1000 * 3600 * 24));
|
|
};
|
|
|
|
export const timeAgo = (time: any) => {
|
|
switch (typeof time) {
|
|
case "number":
|
|
break;
|
|
case "string":
|
|
time = +new Date(time);
|
|
break;
|
|
case "object":
|
|
if (time.constructor === Date) time = time.getTime();
|
|
break;
|
|
default:
|
|
time = +new Date();
|
|
}
|
|
|
|
var time_formats = [
|
|
[60, "seconds", 1], // 60
|
|
[120, "1 minute ago", "1 minute from now"], // 60*2
|
|
[3600, "minutes", 60], // 60*60, 60
|
|
[7200, "1 hour ago", "1 hour from now"], // 60*60*2
|
|
[86400, "hours", 3600], // 60*60*24, 60*60
|
|
[172800, "Yesterday", "Tomorrow"], // 60*60*24*2
|
|
[604800, "days", 86400], // 60*60*24*7, 60*60*24
|
|
[1209600, "Last week", "Next week"], // 60*60*24*7*4*2
|
|
[2419200, "weeks", 604800], // 60*60*24*7*4, 60*60*24*7
|
|
[4838400, "Last month", "Next month"], // 60*60*24*7*4*2
|
|
[29030400, "months", 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
|
|
[58060800, "Last year", "Next year"], // 60*60*24*7*4*12*2
|
|
[2903040000, "years", 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
|
|
[5806080000, "Last century", "Next century"], // 60*60*24*7*4*12*100*2
|
|
[58060800000, "centuries", 2903040000], // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
|
|
];
|
|
|
|
var seconds = (+new Date() - time) / 1000,
|
|
token = "ago",
|
|
list_choice = 1;
|
|
|
|
if (seconds == 0) {
|
|
return "Just now";
|
|
}
|
|
if (seconds < 0) {
|
|
seconds = Math.abs(seconds);
|
|
token = "from now";
|
|
list_choice = 2;
|
|
}
|
|
var i = 0,
|
|
format;
|
|
while ((format = time_formats[i++]))
|
|
if (seconds < format[0]) {
|
|
if (typeof format[2] == "string") return format[list_choice];
|
|
else return Math.floor(seconds / format[2]) + " " + format[1] + " " + token;
|
|
}
|
|
return time;
|
|
};
|