У вас есть две проблемы:
MuiThemeProvider
, но он не упаковывает Paper
. Но вы хотите изменить стиль Paper
. Вы должны убедиться, что MuiThemeProvider
является родителем компонентов, которые вы пытаетесь настроить. См. Документы . Paper
не влияют palette.primary
или palette.secondary
. Он принимает цвет из palette.background.paper
. См. Тему по умолчанию здесь . Вот демонстрация, надеюсь, это поможет.
const {createMuiTheme, green, CssBaseline, Paper, MuiThemeProvider
} = window['material-ui'];
const theme = createMuiTheme({
typography: {
useNextVariants: true,
},
palette: {
background: {paper: '#5fba7d'}
},
});
const Footer = () => {
return(
Copywright Medicinal Foods 2019!
All Rights Reserved!
Thanks for visitng!
);
}
ReactDOM.render(, document.getElementById('root'));
Вот способ выравнивания диапазона дат, подобный этому
Start | End
2009-1-1 06:00 | 2009-1-1 18:00
2009-2-1 20:00 | 2009-2-2 04:00
2009-2-2 06:00 | 2009-2-2 14:00
Вы должны сравнить предыдущие и следующие даты в каждой строке и посмотреть, есть ли
Используя приведенный выше код, реализация UDF выполняется так же просто, как и следовало бы.
create function fnThereIsWatchmenBetween(@from datetime, @to datetime)
returns bit
as
begin
declare @_Result bit
declare @FlattenedDateRange table (
Start datetime,
[End] datetime
)
insert @FlattenedDateRange(Start, [End])
select distinct
Start =
case
when Pv.Start is null then Curr.Start
when Curr.Start between Pv.Start and Pv.[End] then Pv.Start
else Curr.Start
end,
[End] =
case
when Curr.[End] between Nx.Start and Nx.[End] then Nx.[End]
else Curr.[End]
end
from shift Curr
left join shift Pv on Pv.ID = Curr.ID - 1 --; prev
left join shift Nx on Nx.ID = Curr.ID + 1 --; next
if exists( select 1
from FlattenedDateRange R
where @from between R.Start and R.[End]
and @to between R.Start and R.[End]) begin
set @_Result = 1 --; There is/are watchman/men during specified date range
end
else begin
set @_Result = 0 --; There is NO watchman
end
return @_Result
end
Неохраняемый интервал, очевидно, начинается либо в конце наблюдаемого периода, либо в начале всего проверяемого временного диапазона. Поэтому вам нужен запрос, который выбирает все элементы из этого набора, которые не имеют перекрывающегося сдвига. Запрос будет выглядеть так:
select 1
from shifts s1 where not exists
(select 1 from shifts s2
where s2.start<=s1.end and s2.end > s1.end
)
and s1.end>=start_of_range and s1.end< end_of_range
union
select 1
where not exists
(select 1 from shifts s2
where s2.start<=start_of_range and s2.end > start_of_range
)
Если он не пустой, значит, у вас есть неохраняемый интервал. Я подозреваю, что он будет работать в квадратичном времени, поэтому он может быть медленнее, чем "sort, fetch and loop".
Один из способов - создать временную таблицу со строкой для каждого значения времени, требующего проверки (которое является функцией разрешения ваших смен).
Если бы это были минуты, будет иметь 60 * 24 = 1440 строк в день; около 10 тысяч строк в неделю.
Тогда SQL относительно прост:
SELECT COUNT (1)
ОТ # минут m
СЛЕДУЮЩЕЕ СОЕДИНЕНИЕ переключает с ON на m.checktime МЕЖДУ s.start_time И s.end_time
HAVING COUNT (1) = 0
Это также дает возможность показывать, сколько смен покрывает одно и то же время.
Время выполнения должно быть незначительным с учетом описанных вами шкал.