allow milestones with no set date
parent
539ab54e85
commit
f7b8874b0d
|
|
@ -195,6 +195,7 @@ export async function handler(request, response) {
|
||||||
};
|
};
|
||||||
if (request.query.workOrderId) {
|
if (request.query.workOrderId) {
|
||||||
workOrderMilestoneFilters.workOrderId = request.query.workOrderId;
|
workOrderMilestoneFilters.workOrderId = request.query.workOrderId;
|
||||||
|
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'notBlank';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent';
|
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent';
|
||||||
|
|
|
||||||
|
|
@ -294,6 +294,7 @@ export async function handler(
|
||||||
|
|
||||||
if (request.query.workOrderId) {
|
if (request.query.workOrderId) {
|
||||||
workOrderMilestoneFilters.workOrderId = request.query.workOrderId as string
|
workOrderMilestoneFilters.workOrderId = request.query.workOrderId as string
|
||||||
|
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'notBlank'
|
||||||
} else {
|
} else {
|
||||||
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent'
|
workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ const createStatements = [
|
||||||
`create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`,
|
`create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`,
|
||||||
'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)',
|
'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)',
|
||||||
`create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`,
|
`create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`,
|
||||||
`create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate > 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))`
|
`create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate >= 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))`
|
||||||
];
|
];
|
||||||
export function initializeDatabase() {
|
export function initializeDatabase() {
|
||||||
const lotOccupancyDB = sqlite(databasePath);
|
const lotOccupancyDB = sqlite(databasePath);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ const createStatements = [
|
||||||
`create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`,
|
`create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`,
|
||||||
'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)',
|
'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)',
|
||||||
`create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`,
|
`create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`,
|
||||||
`create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate > 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))`
|
`create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate >= 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))`
|
||||||
]
|
]
|
||||||
|
|
||||||
export function initializeDatabase(): boolean {
|
export function initializeDatabase(): boolean {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ export async function addWorkOrderMilestone(milestoneForm, requestSession) {
|
||||||
recordCreate_userName, recordCreate_timeMillis,
|
recordCreate_userName, recordCreate_timeMillis,
|
||||||
recordUpdate_userName, recordUpdate_timeMillis)
|
recordUpdate_userName, recordUpdate_timeMillis)
|
||||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
||||||
.run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString
|
.run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, milestoneForm.workOrderMilestoneDateString === ''
|
||||||
|
? 0
|
||||||
|
: dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString
|
||||||
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
||||||
: 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString
|
: 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString
|
||||||
? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString)
|
? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString)
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,9 @@ export async function addWorkOrderMilestone(
|
||||||
.run(
|
.run(
|
||||||
milestoneForm.workOrderId,
|
milestoneForm.workOrderId,
|
||||||
milestoneForm.workOrderMilestoneTypeId ?? undefined,
|
milestoneForm.workOrderMilestoneTypeId ?? undefined,
|
||||||
dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
|
milestoneForm.workOrderMilestoneDateString === ''
|
||||||
|
? 0
|
||||||
|
: dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
|
||||||
milestoneForm.workOrderMilestoneTimeString
|
milestoneForm.workOrderMilestoneTimeString
|
||||||
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
||||||
: 0,
|
: 0,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import type { PoolConnection } from 'better-sqlite-pool';
|
||||||
import type * as recordTypes from '../../types/recordTypes';
|
import type * as recordTypes from '../../types/recordTypes';
|
||||||
export interface WorkOrderMilestoneFilters {
|
export interface WorkOrderMilestoneFilters {
|
||||||
workOrderId?: number | string;
|
workOrderId?: number | string;
|
||||||
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date';
|
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank';
|
||||||
workOrderMilestoneDateString?: string;
|
workOrderMilestoneDateString?: string;
|
||||||
workOrderTypeIds?: string;
|
workOrderTypeIds?: string;
|
||||||
workOrderMilestoneTypeIds?: string;
|
workOrderMilestoneTypeIds?: string;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,14 @@ function buildWhereClause(filters) {
|
||||||
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber);
|
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'blank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = 0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 'notBlank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate > 0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((filters.workOrderMilestoneDateString ?? '') !== '') {
|
if ((filters.workOrderMilestoneDateString ?? '') !== '') {
|
||||||
sqlWhereClause += ' and m.workOrderMilestoneDate = ?';
|
sqlWhereClause += ' and m.workOrderMilestoneDate = ?';
|
||||||
|
|
@ -64,16 +72,16 @@ export async function getWorkOrderMilestones(filters, options, connectedDatabase
|
||||||
switch (options.orderBy) {
|
switch (options.orderBy) {
|
||||||
case 'completion': {
|
case 'completion': {
|
||||||
orderByClause = ` order by
|
orderByClause = ` order by
|
||||||
m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime,
|
m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime,
|
||||||
m.workOrderMilestoneDate,
|
m.workOrderMilestoneDate,
|
||||||
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
||||||
t.orderNumber, m.workOrderMilestoneId`;
|
t.orderNumber, m.workOrderMilestoneId`;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'date': {
|
case 'date': {
|
||||||
orderByClause = ` order by m.workOrderMilestoneDate,
|
orderByClause = ` order by m.workOrderMilestoneDate,
|
||||||
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
||||||
t.orderNumber, m.workOrderId, m.workOrderMilestoneId`;
|
t.orderNumber, m.workOrderId, m.workOrderMilestoneId`;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import type * as recordTypes from '../../types/recordTypes'
|
||||||
|
|
||||||
export interface WorkOrderMilestoneFilters {
|
export interface WorkOrderMilestoneFilters {
|
||||||
workOrderId?: number | string
|
workOrderId?: number | string
|
||||||
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date'
|
workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank'
|
||||||
workOrderMilestoneDateString?: string
|
workOrderMilestoneDateString?: string
|
||||||
workOrderTypeIds?: string
|
workOrderTypeIds?: string
|
||||||
workOrderMilestoneTypeIds?: string
|
workOrderMilestoneTypeIds?: string
|
||||||
|
|
@ -81,6 +81,16 @@ function buildWhereClause(filters: WorkOrderMilestoneFilters): {
|
||||||
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber)
|
sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'blank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate = 0'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'notBlank': {
|
||||||
|
sqlWhereClause += ' and m.workOrderMilestoneDate > 0'
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((filters.workOrderMilestoneDateString ?? '') !== '') {
|
if ((filters.workOrderMilestoneDateString ?? '') !== '') {
|
||||||
|
|
@ -133,17 +143,17 @@ export async function getWorkOrderMilestones(
|
||||||
switch (options.orderBy) {
|
switch (options.orderBy) {
|
||||||
case 'completion': {
|
case 'completion': {
|
||||||
orderByClause = ` order by
|
orderByClause = ` order by
|
||||||
m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime,
|
m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime,
|
||||||
m.workOrderMilestoneDate,
|
m.workOrderMilestoneDate,
|
||||||
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
||||||
t.orderNumber, m.workOrderMilestoneId`
|
t.orderNumber, m.workOrderMilestoneId`
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'date': {
|
case 'date': {
|
||||||
orderByClause = ` order by m.workOrderMilestoneDate,
|
orderByClause = ` order by m.workOrderMilestoneDate,
|
||||||
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end,
|
||||||
t.orderNumber, m.workOrderId, m.workOrderMilestoneId`
|
t.orderNumber, m.workOrderId, m.workOrderMilestoneId`
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,9 @@ export async function updateWorkOrderMilestone(milestoneForm, requestSession) {
|
||||||
where workOrderMilestoneId = ?`)
|
where workOrderMilestoneId = ?`)
|
||||||
.run(milestoneForm.workOrderMilestoneTypeId === ''
|
.run(milestoneForm.workOrderMilestoneTypeId === ''
|
||||||
? undefined
|
? undefined
|
||||||
: milestoneForm.workOrderMilestoneTypeId, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === ''
|
: milestoneForm.workOrderMilestoneTypeId, milestoneForm.workOrderMilestoneDateString === ''
|
||||||
|
? 0
|
||||||
|
: dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === ''
|
||||||
? 0
|
? 0
|
||||||
: timeStringToInteger(milestoneForm.workOrderMilestoneTimeString), milestoneForm.workOrderMilestoneDescription, requestSession.user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId);
|
: timeStringToInteger(milestoneForm.workOrderMilestoneTimeString), milestoneForm.workOrderMilestoneDescription, requestSession.user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId);
|
||||||
database.release();
|
database.release();
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,9 @@ export async function updateWorkOrderMilestone(
|
||||||
milestoneForm.workOrderMilestoneTypeId === ''
|
milestoneForm.workOrderMilestoneTypeId === ''
|
||||||
? undefined
|
? undefined
|
||||||
: milestoneForm.workOrderMilestoneTypeId,
|
: milestoneForm.workOrderMilestoneTypeId,
|
||||||
dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
|
milestoneForm.workOrderMilestoneDateString === ''
|
||||||
|
? 0
|
||||||
|
: dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
|
||||||
(milestoneForm.workOrderMilestoneTimeString ?? '') === ''
|
(milestoneForm.workOrderMilestoneTimeString ?? '') === ''
|
||||||
? 0
|
? 0
|
||||||
: timeStringToInteger(milestoneForm.workOrderMilestoneTimeString!),
|
: timeStringToInteger(milestoneForm.workOrderMilestoneTimeString!),
|
||||||
|
|
|
||||||
|
|
@ -929,7 +929,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
title: 'Complete Milestone',
|
title: 'Complete Milestone',
|
||||||
message: 'Are you sure you want to complete this milestone?' +
|
message: 'Are you sure you want to complete this milestone?' +
|
||||||
(workOrderMilestone.workOrderMilestoneDateString > currentDateString
|
(workOrderMilestone.workOrderMilestoneDateString !== '' &&
|
||||||
|
workOrderMilestone.workOrderMilestoneDateString > currentDateString
|
||||||
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
||||||
: ''),
|
: ''),
|
||||||
messageIsHtml: true,
|
messageIsHtml: true,
|
||||||
|
|
@ -1077,7 +1078,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') +
|
cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') +
|
||||||
'</strong><br />'
|
'</strong><br />'
|
||||||
: '') +
|
: '') +
|
||||||
milestone.workOrderMilestoneDateString +
|
(milestone.workOrderMilestoneDate === 0
|
||||||
|
? '<span class="has-text-grey">(No Set Date)</span>'
|
||||||
|
: milestone.workOrderMilestoneDateString) +
|
||||||
(milestone.workOrderMilestoneTime
|
(milestone.workOrderMilestoneTime
|
||||||
? ' ' + milestone.workOrderMilestoneTimeString
|
? ' ' + milestone.workOrderMilestoneTimeString
|
||||||
: '') +
|
: '') +
|
||||||
|
|
@ -1150,7 +1153,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value < currentDateString) {
|
const milestoneDateString = addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value;
|
||||||
|
if (milestoneDateString !== '' &&
|
||||||
|
milestoneDateString < currentDateString) {
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
title: 'Milestone Date in the Past',
|
title: 'Milestone Date in the Past',
|
||||||
message: 'Are you sure you want to create a milestone with a date in the past?',
|
message: 'Are you sure you want to create a milestone with a date in the past?',
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
title: 'Complete Milestone',
|
title: 'Complete Milestone',
|
||||||
message: 'Are you sure you want to complete this milestone?' +
|
message: 'Are you sure you want to complete this milestone?' +
|
||||||
(workOrderMilestone.workOrderMilestoneDateString > currentDateString
|
(workOrderMilestone.workOrderMilestoneDateString !== '' &&
|
||||||
|
workOrderMilestone.workOrderMilestoneDateString > currentDateString
|
||||||
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
||||||
: ''),
|
: ''),
|
||||||
messageIsHtml: true,
|
messageIsHtml: true,
|
||||||
|
|
@ -322,7 +323,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') +
|
cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') +
|
||||||
'</strong><br />'
|
'</strong><br />'
|
||||||
: '') +
|
: '') +
|
||||||
milestone.workOrderMilestoneDateString +
|
(milestone.workOrderMilestoneDate === 0
|
||||||
|
? '<span class="has-text-grey">(No Set Date)</span>'
|
||||||
|
: milestone.workOrderMilestoneDateString) +
|
||||||
(milestone.workOrderMilestoneTime
|
(milestone.workOrderMilestoneTime
|
||||||
? ' ' + milestone.workOrderMilestoneTimeString
|
? ' ' + milestone.workOrderMilestoneTimeString
|
||||||
: '') +
|
: '') +
|
||||||
|
|
@ -395,7 +398,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value < currentDateString) {
|
const milestoneDateString = addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value;
|
||||||
|
if (milestoneDateString !== '' &&
|
||||||
|
milestoneDateString < currentDateString) {
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
title: 'Milestone Date in the Past',
|
title: 'Milestone Date in the Past',
|
||||||
message: 'Are you sure you want to create a milestone with a date in the past?',
|
message: 'Are you sure you want to create a milestone with a date in the past?',
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,8 @@ declare const bulmaJS: BulmaJS
|
||||||
title: 'Complete Milestone',
|
title: 'Complete Milestone',
|
||||||
message:
|
message:
|
||||||
'Are you sure you want to complete this milestone?' +
|
'Are you sure you want to complete this milestone?' +
|
||||||
(workOrderMilestone.workOrderMilestoneDateString! > currentDateString
|
(workOrderMilestone.workOrderMilestoneDateString !== '' &&
|
||||||
|
workOrderMilestone.workOrderMilestoneDateString! > currentDateString
|
||||||
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
? '<br /><strong>Note that this milestone is expected to be completed in the future.</strong>'
|
||||||
: ''),
|
: ''),
|
||||||
messageIsHtml: true,
|
messageIsHtml: true,
|
||||||
|
|
@ -481,7 +482,9 @@ declare const bulmaJS: BulmaJS
|
||||||
cityssm.escapeHTML(milestone.workOrderMilestoneType ?? '') +
|
cityssm.escapeHTML(milestone.workOrderMilestoneType ?? '') +
|
||||||
'</strong><br />'
|
'</strong><br />'
|
||||||
: '') +
|
: '') +
|
||||||
milestone.workOrderMilestoneDateString +
|
(milestone.workOrderMilestoneDate === 0
|
||||||
|
? '<span class="has-text-grey">(No Set Date)</span>'
|
||||||
|
: milestone.workOrderMilestoneDateString) +
|
||||||
(milestone.workOrderMilestoneTime
|
(milestone.workOrderMilestoneTime
|
||||||
? ' ' + milestone.workOrderMilestoneTimeString
|
? ' ' + milestone.workOrderMilestoneTimeString
|
||||||
: '') +
|
: '') +
|
||||||
|
|
@ -579,12 +582,15 @@ declare const bulmaJS: BulmaJS
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const milestoneDateString = (
|
||||||
|
addModalElement.querySelector(
|
||||||
|
'#milestoneAdd--workOrderMilestoneDateString'
|
||||||
|
) as HTMLInputElement
|
||||||
|
).value
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(
|
milestoneDateString !== '' &&
|
||||||
addModalElement.querySelector(
|
milestoneDateString < currentDateString
|
||||||
'#milestoneAdd--workOrderMilestoneDateString'
|
|
||||||
) as HTMLInputElement
|
|
||||||
).value < currentDateString
|
|
||||||
) {
|
) {
|
||||||
bulmaJS.confirm({
|
bulmaJS.confirm({
|
||||||
title: 'Milestone Date in the Past',
|
title: 'Milestone Date in the Past',
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
milestoneCalendarContainerElement.innerHTML = '';
|
milestoneCalendarContainerElement.innerHTML = '';
|
||||||
const currentDate = cityssm.dateToString(new Date());
|
const currentDate = cityssm.dateToString(new Date());
|
||||||
let currentPanelElement;
|
let currentPanelElement;
|
||||||
let currentPanelDateString = '';
|
let currentPanelDateString = 'x';
|
||||||
for (const milestone of workOrderMilestones) {
|
for (const milestone of workOrderMilestones) {
|
||||||
if (currentPanelDateString !== milestone.workOrderMilestoneDateString) {
|
if (currentPanelDateString !== milestone.workOrderMilestoneDateString) {
|
||||||
if (currentPanelElement) {
|
if (currentPanelElement) {
|
||||||
|
|
@ -26,12 +26,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
}
|
}
|
||||||
currentPanelElement = document.createElement('div');
|
currentPanelElement = document.createElement('div');
|
||||||
currentPanelElement.className = 'panel';
|
currentPanelElement.className = 'panel';
|
||||||
currentPanelElement.innerHTML = `<h2 class="panel-heading">${milestone.workOrderMilestoneDateString}</h2>`;
|
currentPanelElement.innerHTML = `<h2 class="panel-heading">
|
||||||
|
${milestone.workOrderMilestoneDate === 0
|
||||||
|
? 'No Set Date'
|
||||||
|
: milestone.workOrderMilestoneDateString}
|
||||||
|
</h2>`;
|
||||||
currentPanelDateString = milestone.workOrderMilestoneDateString;
|
currentPanelDateString = milestone.workOrderMilestoneDateString;
|
||||||
}
|
}
|
||||||
const panelBlockElement = document.createElement('div');
|
const panelBlockElement = document.createElement('div');
|
||||||
panelBlockElement.className = 'panel-block is-block';
|
panelBlockElement.className = 'panel-block is-block';
|
||||||
if (!milestone.workOrderMilestoneCompletionDate &&
|
if (!milestone.workOrderMilestoneCompletionDate &&
|
||||||
|
milestone.workOrderMilestoneDateString !== '' &&
|
||||||
milestone.workOrderMilestoneDateString < currentDate) {
|
milestone.workOrderMilestoneDateString < currentDate) {
|
||||||
panelBlockElement.classList.add('has-background-warning-light');
|
panelBlockElement.classList.add('has-background-warning-light');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ declare const cityssm: cityssmGlobal
|
||||||
const currentDate = cityssm.dateToString(new Date())
|
const currentDate = cityssm.dateToString(new Date())
|
||||||
|
|
||||||
let currentPanelElement: HTMLElement | undefined
|
let currentPanelElement: HTMLElement | undefined
|
||||||
let currentPanelDateString = ''
|
let currentPanelDateString = 'x'
|
||||||
|
|
||||||
for (const milestone of workOrderMilestones) {
|
for (const milestone of workOrderMilestones) {
|
||||||
if (currentPanelDateString !== milestone.workOrderMilestoneDateString) {
|
if (currentPanelDateString !== milestone.workOrderMilestoneDateString) {
|
||||||
|
|
@ -52,7 +52,13 @@ declare const cityssm: cityssmGlobal
|
||||||
currentPanelElement = document.createElement('div')
|
currentPanelElement = document.createElement('div')
|
||||||
currentPanelElement.className = 'panel'
|
currentPanelElement.className = 'panel'
|
||||||
|
|
||||||
currentPanelElement.innerHTML = `<h2 class="panel-heading">${milestone.workOrderMilestoneDateString!}</h2>`
|
currentPanelElement.innerHTML = `<h2 class="panel-heading">
|
||||||
|
${
|
||||||
|
milestone.workOrderMilestoneDate === 0
|
||||||
|
? 'No Set Date'
|
||||||
|
: milestone.workOrderMilestoneDateString!
|
||||||
|
}
|
||||||
|
</h2>`
|
||||||
|
|
||||||
currentPanelDateString = milestone.workOrderMilestoneDateString!
|
currentPanelDateString = milestone.workOrderMilestoneDateString!
|
||||||
}
|
}
|
||||||
|
|
@ -63,6 +69,7 @@ declare const cityssm: cityssmGlobal
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!milestone.workOrderMilestoneCompletionDate &&
|
!milestone.workOrderMilestoneCompletionDate &&
|
||||||
|
milestone.workOrderMilestoneDateString !== '' &&
|
||||||
milestone.workOrderMilestoneDateString! < currentDate
|
milestone.workOrderMilestoneDateString! < currentDate
|
||||||
) {
|
) {
|
||||||
panelBlockElement.classList.add('has-background-warning-light')
|
panelBlockElement.classList.add('has-background-warning-light')
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,6 @@
|
||||||
id="milestoneAdd--workOrderMilestoneDateString"
|
id="milestoneAdd--workOrderMilestoneDateString"
|
||||||
name="workOrderMilestoneDateString"
|
name="workOrderMilestoneDateString"
|
||||||
type="date"
|
type="date"
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="fas fa-calendar" aria-hidden="true"></i>
|
<i class="fas fa-calendar" aria-hidden="true"></i>
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,6 @@
|
||||||
id="milestoneEdit--workOrderMilestoneDateString"
|
id="milestoneEdit--workOrderMilestoneDateString"
|
||||||
name="workOrderMilestoneDateString"
|
name="workOrderMilestoneDateString"
|
||||||
type="date"
|
type="date"
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
<span class="icon is-left">
|
<span class="icon is-left">
|
||||||
<i class="fas fa-calendar" aria-hidden="true"></i>
|
<i class="fas fa-calendar" aria-hidden="true"></i>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='<div class="message is-info">\n <p class="message-body">There are no milestones that meet the search criteria.</p>\n </div>');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`<h2 class="panel-heading">${M.workOrderMilestoneDateString}</h2>`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&M.workOrderMilestoneDateString<p&&s.classList.add("has-background-warning-light");let v="";for(const s of M.workOrderLots)v+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(r=s.mapName)&&void 0!==r?r:"")+'"><i class="fas fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"</span><br />";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)v+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(i=r.lotOccupantType)&&void 0!==i?i:"")+'"><i class="fas fa-user" aria-label="'+e.escapedAliases.Occupancy+'"></i> '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"</span><br />";s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(M.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>')+'</span></div><div class="column">'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimeString+"<br />")+(M.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(M.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(null!==(l=M.workOrderNumber)&&void 0!==l?l:"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.getWorkOrderURL(M.workOrderId)+'">'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'</span></div><div class="column is-size-7">'+v+"</div></div>",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})();
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='<div class="message is-info">\n <p class="message-body">There are no milestones that meet the search criteria.</p>\n </div>');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="x";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`<h2 class="panel-heading">\n ${0===M.workOrderMilestoneDate?"No Set Date":M.workOrderMilestoneDateString}\n </h2>`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&""!==M.workOrderMilestoneDateString&&M.workOrderMilestoneDateString<p&&s.classList.add("has-background-warning-light");let O="";for(const s of M.workOrderLots)O+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(r=s.mapName)&&void 0!==r?r:"")+'"><i class="fas fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"</span><br />";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)O+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(i=r.lotOccupantType)&&void 0!==i?i:"")+'"><i class="fas fa-user" aria-label="'+e.escapedAliases.Occupancy+'"></i> '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"</span><br />";s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(M.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>')+'</span></div><div class="column">'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimeString+"<br />")+(M.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(M.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(null!==(l=M.workOrderNumber)&&void 0!==l?l:"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.getWorkOrderURL(M.workOrderId)+'">'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'</span></div><div class="column is-size-7">'+O+"</div></div>",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})();
|
||||||
|
|
@ -11,24 +11,24 @@
|
||||||
<h2 class="mb-0"><%= configFunctions.getProperty("aliases.lots") %></h2>
|
<h2 class="mb-0"><%= configFunctions.getProperty("aliases.lots") %></h2>
|
||||||
|
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
||||||
<th><%= configFunctions.getProperty("aliases.map") %></th>
|
<th><%= configFunctions.getProperty("aliases.map") %></th>
|
||||||
<th><%= configFunctions.getProperty("aliases.lot") %> Type</th>
|
<th><%= configFunctions.getProperty("aliases.lot") %> Type</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% for (const lot of workOrder.workOrderLots) { %>
|
<% for (const lot of workOrder.workOrderLots) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= lot.lotName %></td>
|
<td><%= lot.lotName %></td>
|
||||||
<td><%= lot.mapName %></td>
|
<td><%= lot.mapName %></td>
|
||||||
<td><%= lot.lotType %></td>
|
<td><%= lot.lotType %></td>
|
||||||
<td><%= lot.lotStatus %></td>
|
<td><%= lot.lotStatus %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% } %>
|
<% } %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
@ -37,13 +37,13 @@
|
||||||
|
|
||||||
<table class="data-table">
|
<table class="data-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><%= configFunctions.getProperty("aliases.occupancy") %> Type</th>
|
<th><%= configFunctions.getProperty("aliases.occupancy") %> Type</th>
|
||||||
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
||||||
<th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th>
|
<th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th>
|
||||||
<th>End Date</th>
|
<th>End Date</th>
|
||||||
<th><%= configFunctions.getProperty("aliases.occupants") %></th>
|
<th><%= configFunctions.getProperty("aliases.occupants") %></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% for (const occupancy of workOrder.workOrderLotOccupancies) { %>
|
<% for (const occupancy of workOrder.workOrderLotOccupancies) { %>
|
||||||
|
|
@ -94,7 +94,11 @@
|
||||||
<%= milestone.workOrderMilestoneDescription %>
|
<%= milestone.workOrderMilestoneDescription %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= milestone.workOrderMilestoneDateString %>
|
<% if (milestone.workOrderMilestoneDate === 0) { %>
|
||||||
|
(No Set Date)
|
||||||
|
<% } else { %>
|
||||||
|
<%= milestone.workOrderMilestoneDateString %>
|
||||||
|
<% } %>
|
||||||
<% if (milestone.workOrderMilestoneTime) { %>
|
<% if (milestone.workOrderMilestoneTime) { %>
|
||||||
<%= milestone.workOrderMilestoneTimeString %>
|
<%= milestone.workOrderMilestoneTimeString %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
||||||
|
|
@ -321,32 +321,36 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% for (const milestone of workOrder.workOrderMilestones) { %>
|
<% for (const milestone of workOrder.workOrderMilestones) { %>
|
||||||
<div class="panel-block is-block">
|
<div class="panel-block is-block">
|
||||||
<div class="columns is-mobile">
|
<div class="columns is-mobile">
|
||||||
<div class="column is-narrow">
|
<div class="column is-narrow">
|
||||||
<% if (milestone.workOrderMilestoneCompletionDate) { %>
|
<% if (milestone.workOrderMilestoneCompletionDate) { %>
|
||||||
<span class="icon is-small" data-tooltip="Completed <%= milestone.workOrderMilestoneCompletionDateString %>">
|
<span class="icon is-small" data-tooltip="Completed <%= milestone.workOrderMilestoneCompletionDateString %>">
|
||||||
<i class="fas fa-check" aria-label="Completed <%= milestone.workOrderMilestoneCompletionDateString %>"></i>
|
<i class="fas fa-check" aria-label="Completed <%= milestone.workOrderMilestoneCompletionDateString %>"></i>
|
||||||
</span>
|
</span>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<span class="icon is-small">
|
<span class="icon is-small">
|
||||||
<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>
|
<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>
|
||||||
</span>
|
</span>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<% if (milestone.workOrderMilestoneTypeId) { %>
|
<% if (milestone.workOrderMilestoneTypeId) { %>
|
||||||
<strong><%= milestone.workOrderMilestoneType %></strong><br />
|
<strong><%= milestone.workOrderMilestoneType %></strong><br />
|
||||||
<% } %>
|
<% } %>
|
||||||
<%= milestone.workOrderMilestoneDateString %>
|
<% if (milestone.workOrderMilestoneDate === 0) { %>
|
||||||
<% if (milestone.workOrderMilestoneTime !== 0) { %>
|
<span class="has-text-grey">(No Set Date)</span>
|
||||||
<%= milestone.workOrderMilestoneTimeString %>
|
<% } else { %>
|
||||||
<% } %>
|
<%= milestone.workOrderMilestoneDateString %>
|
||||||
<br />
|
<% } %>
|
||||||
<span class="is-size-7"><%= milestone.workOrderMilestoneDescription %></span>
|
<% if (milestone.workOrderMilestoneTime !== 0) { %>
|
||||||
</div>
|
<%= milestone.workOrderMilestoneTimeString %>
|
||||||
</div>
|
<% } %>
|
||||||
|
<br />
|
||||||
|
<span class="is-size-7"><%= milestone.workOrderMilestoneDescription %></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue