대시보드 화면 디자인 수정 중
This commit is contained in:
parent
4a2c3714ba
commit
15299b3de5
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="286" height="164" viewBox="0 0 286 164" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M259 153L179.015 153C197.205 142.983 211.133 126.18 217.385 106L259 106L259 94L286 94L286 164L259 164L259 153Z" fill="black"/>
|
||||
<path d="M6.11959e-06 -1.21518e-05L27 -9.79135e-06L27 11L139 11L139 11.0078C108.644 11.4269 82.8939 30.8954 73.1602 58L27 58L27 70L0 70L6.11959e-06 -1.21518e-05Z" fill="black"/>
|
||||
<path d="M140 11C179.212 11 211 42.7878 211 82C211 121.212 179.212 153 140 153C100.788 153 69 121.212 69 82C69 42.7878 100.788 11 140 11ZM155.737 102.695C151.368 106.023 145.916 108 140 108C134.331 108 129.087 106.185 124.814 103.105L102.157 116.188C111.49 126.512 124.987 133 140 133C155.245 133 168.925 126.308 178.271 115.705L155.737 102.695ZM131 31.792C107.126 36.0428 89 56.9045 89 82C89 88.3231 90.1514 94.3772 92.2549 99.9648L114.505 87.1191C114.174 85.464 114 83.7523 114 82C114 70.8045 121.076 61.2623 131 57.6006V31.792ZM150 57.9932C159.396 61.9114 166 71.1843 166 82C166 83.5208 165.868 85.0108 165.617 86.46L187.967 99.3633C189.929 93.9436 191 88.0969 191 82C191 57.2561 173.378 36.6283 150 31.9805V57.9932ZM140 72C134.477 72 130 76.4772 130 82C130 87.5228 134.477 92 140 92C145.523 92 150 87.5228 150 82C150 76.4772 145.523 72 140 72Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -1,5 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 117.35" style="enable-background:new 0 0 122.88 117.35" xml:space="preserve">
|
||||
<style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style>
|
||||
<g><path class="st0" d="M79.22,54.41c5.16,3.03,9.06,6.88,11.81,11.19h5.36v36.21h-5.73c-5.72,9.03-15.74,15.53-28.98,15.53 c-13.23,0-23.34-6.5-29.09-15.53h-5.96V65.6h5.91c2.98-4.48,7.25-8.48,12.96-11.58c3.04-1.64,4.88-3.69,4.9-5.53 c0.03-2.33-2.52-4.31-5.26-4.31h-1.36c-3.32,0-6.04-2.72-6.04-6.04l0,0c0-3.32,2.72-6.04,6.04-6.04h7.76l6.1-7.57 c-0.02-0.28-0.04-0.57-0.04-0.87v-9.99H32.87c-3.77,0-6.85-3.08-6.85-6.85l0,0c0-3.76,3.08-6.85,6.85-6.85h58.18 c3.76,0,6.85,3.08,6.85,6.85l0,0c0,3.77-3.08,6.85-6.85,6.85H67.51v9.99c0,0.41-0.03,0.82-0.07,1.21l5.48,7.23h6.67 c3.32,0,6.04,2.72,6.04,6.04l0,0c0,3.32-2.72,5.97-6.04,6.04c-4.57,0.1-6.25,2.06-6.04,4.34C73.91,52.73,76.83,53.01,79.22,54.41 L79.22,54.41z M101.34,65.6h4.2v-8.65c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79v53.51 c0,1.54-1.26,2.79-2.79,2.79h-11.76c-1.54,0-2.79-1.26-2.79-2.79v-8.65h-4.2V65.6L101.34,65.6z M21.67,101.81h-4.33v8.65 c0,1.54-1.26,2.79-2.79,2.79H2.79C1.26,113.25,0,112,0,110.46V56.95c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79 v8.65h4.33V101.81L21.67,101.81z"/></g>
|
||||
<g><path fill="currentColor" d="M79.22,54.41c5.16,3.03,9.06,6.88,11.81,11.19h5.36v36.21h-5.73c-5.72,9.03-15.74,15.53-28.98,15.53 c-13.23,0-23.34-6.5-29.09-15.53h-5.96V65.6h5.91c2.98-4.48,7.25-8.48,12.96-11.58c3.04-1.64,4.88-3.69,4.9-5.53 c0.03-2.33-2.52-4.31-5.26-4.31h-1.36c-3.32,0-6.04-2.72-6.04-6.04l0,0c0-3.32,2.72-6.04,6.04-6.04h7.76l6.1-7.57 c-0.02-0.28-0.04-0.57-0.04-0.87v-9.99H32.87c-3.77,0-6.85-3.08-6.85-6.85l0,0c0-3.76,3.08-6.85,6.85-6.85h58.18 c3.76,0,6.85,3.08,6.85,6.85l0,0c0,3.77-3.08,6.85-6.85,6.85H67.51v9.99c0,0.41-0.03,0.82-0.07,1.21l5.48,7.23h6.67 c3.32,0,6.04,2.72,6.04,6.04l0,0c0,3.32-2.72,5.97-6.04,6.04c-4.57,0.1-6.25,2.06-6.04,4.34C73.91,52.73,76.83,53.01,79.22,54.41 L79.22,54.41z M101.34,65.6h4.2v-8.65c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79v53.51 c0,1.54-1.26,2.79-2.79,2.79h-11.76c-1.54,0-2.79-1.26-2.79-2.79v-8.65h-4.2V65.6L101.34,65.6z M21.67,101.81h-4.33v8.65 c0,1.54-1.26,2.79-2.79,2.79H2.79C1.26,113.25,0,112,0,110.46V56.95c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79 v8.65h4.33V101.81L21.67,101.81z"/></g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
/* theme */
|
||||
--color-logo-color: rgb(21, 128, 120);
|
||||
--color-env-color: rgb(86, 145, 172);
|
||||
--color-nut-color: rgb(39, 156, 26);
|
||||
--color-etc-color: rgb(140, 152, 154);
|
||||
--color-base-primary: rgb(44, 137, 255);
|
||||
--color-base-background: rgb(242, 244, 248);
|
||||
--color-base-sidebar: rgb(235, 238, 244);
|
||||
|
|
@ -229,7 +232,7 @@
|
|||
}
|
||||
|
||||
.base-table th {
|
||||
@apply px-2 py-3 text-left font-bold lg:table-cell
|
||||
@apply p-3 text-left font-bold lg:table-cell
|
||||
}
|
||||
|
||||
.base-table tr {
|
||||
|
|
@ -237,7 +240,7 @@
|
|||
}
|
||||
|
||||
.base-table td {
|
||||
@apply border-t border-base-border px-2 py-1 lg:table-cell whitespace-nowrap
|
||||
@apply border-t border-base-border p-3 lg:table-cell whitespace-nowrap
|
||||
}
|
||||
|
||||
/*Base List*/
|
||||
|
|
|
|||
|
|
@ -22,4 +22,75 @@ class EnvironmentController < ApplicationController
|
|||
@controller = Controller.find(params[:id])
|
||||
@schedule = Schedule.where(controller_id: params[:id]).order(:hour, :minute)
|
||||
end
|
||||
|
||||
def edit_temp
|
||||
@controller = Controller.find(params[:id])
|
||||
@schedule = Schedule.where(controller_id: params[:id]).order(:hour, :minute)
|
||||
end
|
||||
|
||||
def create
|
||||
@schedule = Schedule.new(schedule_params)
|
||||
|
||||
if @schedule.save
|
||||
redirect_to schedule_edit_schedule_path(@schedule.controller_id), notice: "스케쥴이 추가 되었습니다."
|
||||
else
|
||||
error_messages = @schedule.errors.full_messages.join(", ")
|
||||
redirect_to schedule_edit_schedule_path(@schedule.controller_id), alert: "스케쥴 추가 실패: #{error_messages}"
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@schedule = Schedule.find_by(id: params[:id])
|
||||
|
||||
if @schedule.destroy
|
||||
redirect_to schedule_edit_schedule_path(@schedule.controller_id), notice: "스케줄이 삭제되었습니다."
|
||||
else
|
||||
error_messages = @schedule.errors.full_messages.join(", ")
|
||||
redirect_to schedule_edit_schedule_path(@schedule.controller_id), alert: "스케쥴 삭제 실패: #{error_messages}"
|
||||
end
|
||||
end
|
||||
|
||||
def reset
|
||||
Schedule.where(controller_id: params[:id]).destroy_all
|
||||
ActiveRecord::Base.connection.execute("DELETE FROM sqlite_sequence WHERE name='schedules'")
|
||||
|
||||
redirect_to schedule_edit_schedule_path(params[:id]), notice: "스케줄이 초기화되었습니다."
|
||||
end
|
||||
|
||||
def schedule_edit
|
||||
@controller = Controller.find(params[:id])
|
||||
@schedule = Schedule.where(controller_id: params[:id]).order(:hour, :minute)
|
||||
end
|
||||
|
||||
def schedule_edit_update
|
||||
error_messages = []
|
||||
|
||||
params[:schedule]&.each do |id, attributes|
|
||||
schedule = Schedule.find_by(id: id)
|
||||
next unless schedule
|
||||
|
||||
unless schedule.update(
|
||||
hour: attributes[:hour],
|
||||
minute: attributes[:minute],
|
||||
is_active: attributes[:is_active],
|
||||
temperature: attributes[:temperature]
|
||||
)
|
||||
|
||||
error_detail = schedule.errors.full_messages.join(", ")
|
||||
time_label = "#{attributes[:hour]}시 #{attributes[:minute]}분"
|
||||
error_messages << "#{time_label} - #{error_detail}"
|
||||
end
|
||||
end
|
||||
|
||||
if error_messages.any?
|
||||
redirect_to schedule_edit_schedule_path(params[:controller_id]), alert: error_messages.join("<br>")
|
||||
else
|
||||
redirect_to schedule_edit_schedule_path(params[:controller_id]), notice: "스케줄이 성공적으로 업데이트되었습니다."
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def schedule_params
|
||||
params.require(:schedule).permit(:controller_id, :hour, :minute, :is_active, :temperature)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,10 +1,2 @@
|
|||
module ApplicationHelper
|
||||
def full_height_page?
|
||||
controller_name.in?(%w[environment nutrient schedules]) && action_name == 'index' || action_name == 'schedule_edit'
|
||||
end
|
||||
|
||||
def content_container_classes
|
||||
base_classes = "flex-1 h-full pb-0 px-0 lg:pb-4 lg:px-4"
|
||||
full_height_page? ? base_classes : "#{base_classes} overflow-y-auto"
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
<div class="flex flex-col h-full lg:rounded-lg">
|
||||
<div class="flex flex-row items-center space-x-4 p-2">
|
||||
<%= link_to environment_index_path(id: params[:id]), class: "flex items-center" do %>
|
||||
<i class="fa-solid fa-angle-left text-2xl"></i>
|
||||
<% end %>
|
||||
<div class="text-2xl font-bold leading-10"><%= @controller.id %>동 온도 스케줄러</div>
|
||||
</div>
|
||||
<div class="space-y-4 content overflow-y-hidden divide-y divide-base-border">
|
||||
<%= form_with url: schedule_edit_update_schedules_path, method: :post, class: 'flex flex-col h-full' do %>
|
||||
<%= hidden_field_tag :controller_id, params[:id] %>
|
||||
<div class="flex flex-col divide-y divide-base-border overflow-y-hidden flex-1 space-y-4">
|
||||
<%= submit_tag "업데이트", class: "btn bg-primary w-fit" %>
|
||||
<div class="overflow-y-auto flex-1 min-h-0 border border-base-border rounded-lg">
|
||||
<ul class="divide-y divide-base-border whitespace-nowrap relative">
|
||||
<% if @schedule.present? %>
|
||||
<% @schedule.each do |s| %>
|
||||
<li class="flex justify-between items-center px-4 py-2 space-x-4 h-full relative">
|
||||
<div class="flex items-center space-x-4 basis-3/5 h-full">
|
||||
<!-- 시간 -->
|
||||
<div class="flex flex-col lg:flex-row h-full items-center space-x-0 space-y-2 lg:space-x-4 lg:space-y-0">
|
||||
<div class=" text-left w-full lg:w-auto">시간</div>
|
||||
<div class="text-xl flex items-center space-x-1 w-full h-full">
|
||||
<%= select_tag "schedule[#{s.id}][hour]",
|
||||
options_for_select((0..23).map { |h| [h.to_s.rjust(2, '0'), h] }, s.hour),
|
||||
class: "select-style min-w-[60px]" %>
|
||||
<div>:</div>
|
||||
<%= number_field_tag "schedule[#{s.id}][minute]",
|
||||
s.minute, min: 0, max: 59, step: 1, inputmode: "decimal",
|
||||
class: "input-style min-w-[60px]" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 온도 -->
|
||||
<div class="flex flex-col lg:flex-row h-full items-center space-x-0 space-y-2 lg:space-x-4 lg:space-y-0">
|
||||
<div class=" text-left w-full lg:w-auto">온도 (°C)</div>
|
||||
<div class="text-xl flex items-center">
|
||||
<%= number_field_tag "schedule[#{s.id}][temperature]", s.temperature, min: -99, max: 99, step: "0.1", inputmode: "decimal", class: "input-style min-w-[68px]" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center space-x-4 basis-2/5 justify-end h-full">
|
||||
<!-- 사용 여부 -->
|
||||
<div class="flex flex-col lg:flex-row items-center space-x-0 space-y-2 lg:space-x-4 lg:space-y-0 h-full">
|
||||
<div class="">ON/OFF</div>
|
||||
<label class="relative inline-flex items-center cursor-pointer h-full">
|
||||
<%= check_box_tag "schedule[#{s.id}][is_active]", "1", s.is_active == true || s.is_active == 1, class: "sr-only peer" %>
|
||||
<div class="toggle_style"></div>
|
||||
<div class="btn-toggle-round"></div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- 삭제 -->
|
||||
<div class="flex flex-col lg:flex-row items-center space-x-0 space-y-2 lg:space-x-4 lg:space-y-0 h-full relative">
|
||||
<div class=""> </div>
|
||||
<%= link_to schedule_path(s),
|
||||
data: { turbo_method: :delete, turbo_confirm: "정말 삭제하시겠습니까?" },
|
||||
class: "btn bg-danger text-sm flex items-center px-2 py-0 my-1.5 lg:px-4 lg:py-1.5 lg:my-0" do %>
|
||||
<div class="hidden lg:block">삭제</div>
|
||||
<div class="block lg:hidden"><i class="fa-solid fa-xmark"></i></div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<li class="text-center p-4 w-full">저장된 스케줄이 없습니다.</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="flex space-x-4">
|
||||
<%= button_to "초기화", reset_schedule_path(params[:id]),
|
||||
method: :post,
|
||||
data: { turbo_confirm: "정말 초기화하시겠습니까? 모든 스케줄 데이터가 삭제됩니다." },
|
||||
class: "btn bg-danger" %>
|
||||
<%= button_to "추가하기", open_modals_path(type: "add_schedule", id: params[:id]),
|
||||
class: "btn bg-default-slate",
|
||||
data: {
|
||||
turbo_method: :post,
|
||||
turbo_frame: "modals"
|
||||
} %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,14 +1,32 @@
|
|||
<div class="w-full h-full content">
|
||||
<div class="flex-1 grid grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
<div class="w-full h-full content overflow-y-auto">
|
||||
<div class="flex-1 grid grid-cols-2 xl:grid-cols-4 gap-4">
|
||||
<!-- 실내온도 -->
|
||||
<%= link_to view_temp_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">실내온도</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light">15.5</span>
|
||||
<span class="text-2xl">°C</span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-temperature-quarter text-env-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">온도</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 온도</div>
|
||||
<div class="font-bold text-3xl">16.5<span class="font-normal text-2xl"> °C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">설정 온도</div>
|
||||
<div class="font-bold text-3xl">15.5<span class="font-normal text-2xl"> °C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -16,12 +34,31 @@
|
|||
|
||||
<!-- 실내습도 -->
|
||||
<%= link_to view_humidity_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">실내습도</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-droplet text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']">60</span>
|
||||
<span class="text-2xl">%</span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-droplet text-env-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">습도</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 습도</div>
|
||||
<div class="font-bold text-3xl">78<span class="font-normal text-2xl"> %</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">설정 습도</div>
|
||||
<div class="font-bold text-3xl">80<span class="font-normal text-2xl"> %</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -29,16 +66,40 @@
|
|||
|
||||
<!-- CO2 -->
|
||||
<%= link_to view_co2_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div><span class="text-xl">CO</span><span class="text-sm">2</span></div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<div class="size-10 bg-base-text/80 rounded-full text-base-background flex flex-col justify-center">
|
||||
<div class="flex flex-row justify-center items-baseline">
|
||||
<span class="text-xl">CO</span><span class="text-sm">2</span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<div class="size-10 bg-env-color rounded-full text-base-background flex flex-col justify-center">
|
||||
<div class="flex flex-row justify-center items-baseline">
|
||||
<span class="text-xl">CO</span><span class="text-sm">2</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">CO</span><span class="text-xl">2</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-baseline text-right"><span class="text-4xl font-['Chakra_Petch']">60</span>
|
||||
<span class="text-2xl">%</span></div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 CO</span><span class="text-sm">2</div>
|
||||
<div class="font-bold text-3xl">700<span class="font-normal text-2xl"> ppm</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">최소 CO</span><span class="text-sm">2</div>
|
||||
<div class="font-bold text-3xl">300<span class="font-normal text-2xl"> ppm</span></div>
|
||||
</div>
|
||||
<div class="flex flex-col items-baseline text-right w-full pl-4">
|
||||
<div class="opacity-50">최대 CO</span><span class="text-sm">2</div>
|
||||
<div class="font-bold text-3xl">1000<span class="font-normal text-2xl"> ppm</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
@ -48,12 +109,24 @@
|
|||
|
||||
<!-- 랙 -->
|
||||
<%= link_to rack_index_path, class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">랙 정보</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-lightbulb text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']">5</span>
|
||||
<span class="text-2xl">라인</span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-timeline text-etc-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">랙</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-gear text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 랙 정보</div>
|
||||
<div class="font-bold text-3xl">5<span class="font-normal text-2xl"> 라인</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -61,12 +134,24 @@
|
|||
|
||||
<!-- 센서 구역 -->
|
||||
<%= link_to view_area_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">센서구역 정보</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-fan text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']">6</span>
|
||||
<span class="text-2xl">구역</span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-tower-broadcast text-etc-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">센서구역</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-gear text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 센서구역 정보</div>
|
||||
<div class="font-bold text-3xl">6<span class="font-normal text-2xl"> 구역</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -74,11 +159,23 @@
|
|||
|
||||
<!-- LED -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">LED</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-lightbulb text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']"><div class="btn-toggle-text">AUTO</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-lightbulb text-etc-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">LED</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">자동</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -86,11 +183,23 @@
|
|||
|
||||
<!-- Fan -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">FAN</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-fan text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']"><div class="btn-toggle-text">AUTO</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-fan text-etc-color text-4xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">FAN</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-warning rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-warning">수동</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -7,58 +7,58 @@
|
|||
</div>
|
||||
<div class="flex flex-col flex-1 space-y-4 overflow-y-hidden content">
|
||||
<div class="flex justify-between">
|
||||
<%= link_to "수정", schedule_edit_schedule_path(@controller.id), class: "btn bg-default-slate" %>
|
||||
<%= link_to "수정", edit_temp_environment_path(@controller.id), class: "btn bg-default-slate" %>
|
||||
</div>
|
||||
<div class="lg:rounded-lg border border-base-border overflow-y-hidden">
|
||||
<table class="base-table overflow-y-hidden">
|
||||
<table class="base-table border-b border-base-border table-fixed w-full">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>시간</th>
|
||||
<th>온도</th>
|
||||
<th class="w-1/3">시간</th>
|
||||
<th class="w-1/3">온도</th>
|
||||
<th>사용여부</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="overflow-y-auto">
|
||||
<% if @schedule.present? %>
|
||||
<% @schedule.each do |s| %>
|
||||
</table>
|
||||
|
||||
<!-- tbody 감싸는 div -->
|
||||
<div class="overflow-y-auto max-h-full overflow-x-hidden">
|
||||
<table class="base-table table-fixed w-full">
|
||||
<tbody>
|
||||
<% if @schedule.present? %>
|
||||
<% @schedule.each do |s| %>
|
||||
<tr>
|
||||
<td class="w-1/3">
|
||||
<div class="text-2xl flex items-baseline space-x-1">
|
||||
<div class="text-center w-[36px]"><%= s.hour.to_s.rjust(2, '0') %></div>
|
||||
<div>:</div>
|
||||
<div class="text-center w-[36px]"><%= s.minute.to_s.rjust(2, '0') %></div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="w-1/3">
|
||||
<div class="text-2xl flex items-end space-x-2">
|
||||
<div class="text-left w-[50px]"><%= s.temperature %></div>
|
||||
<div class="text-base leading-7">°C</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="text-2xl w-8 mr-0">
|
||||
<% if s.is_active %>
|
||||
<i class="fa-solid fa-check text-notice"></i>
|
||||
<% else %>
|
||||
<i class="fa-solid fa-xmark text-danger"></i>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<tr>
|
||||
<!-- 시간 -->
|
||||
<td>
|
||||
<div class="text-2xl flex items-baseline space-x-1">
|
||||
<div class="text-center w-[36px]"><%= s.hour.to_s.rjust(2, '0') %></div>
|
||||
<div>:</div>
|
||||
<div class="text-center w-[36px]"><%= s.minute.to_s.rjust(2, '0') %></div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- 온도 -->
|
||||
<td>
|
||||
<div class="text-2xl flex items-end space-x-2">
|
||||
<div class="text-left w-[50px]"><%= s.temperature %></div>
|
||||
<div class="text-base leading-7">°C</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- 사용 여부 -->
|
||||
<td>
|
||||
<div class="text-2xl w-8 mr-0">
|
||||
<%#= s.is_active %>
|
||||
<% if s.is_active %>
|
||||
<i class="fa-solid fa-check text-notice"></i>
|
||||
<% else %>
|
||||
<i class="fa-solid fa-xmark text-danger"></i>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="3" class="text-center p-4 w-full">저장된 스케줄이 없습니다.</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<tr>
|
||||
<td colspan="3" class="text-center p-4 w-full">저장된 스케줄이 없습니다.</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</thead>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,65 +1,135 @@
|
|||
<div class="w-full h-full content">
|
||||
<div class="flex-1 grid grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
<div class="w-full h-full content overflow-y-auto">
|
||||
<div class="flex-1 grid grid-cols-2 xl:grid-cols-4 gap-4">
|
||||
<!-- pH -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex justify-between items-baseline">
|
||||
<div class="text-4xl">pH</div>
|
||||
<div class="text-3xl font-['Chakra_Petch']">7.1</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-baseline">
|
||||
<div class="text-2xl">
|
||||
6.0 ~ 6.0
|
||||
<%= link_to view_temp_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<div class="size-8 bg-nut-color rounded-full text-base-background flex flex-col justify-center">
|
||||
<div class="flex flex-row justify-center items-baseline">
|
||||
<span class="text-xl">pH</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">pH</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 pH</div>
|
||||
<div class="font-bold text-3xl">6.0<span class="font-normal text-2xl"> pH</span></div>
|
||||
</div>
|
||||
<div class="flex flex-col items-baseline text-right w-full pl-4">
|
||||
<div class="opacity-50">오차 pH</div>
|
||||
<div class="font-bold text-3xl">0.1<span class="font-normal text-2xl"> pH</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div><i class="fa-solid fa-gear text-base-text/30 text-2xl"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- EC -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex justify-between items-baseline">
|
||||
<div class="text-4xl">EC</div>
|
||||
<div class="text-3xl font-['Chakra_Petch']">0.1</div>
|
||||
</div>
|
||||
<div class="flex justify-between items-baseline">
|
||||
<div class="text-2xl">
|
||||
0 ~ 1
|
||||
<%= link_to view_temp_environment_path(id: params[:id]), class: "dashboard-group" do %>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<div class="size-8 bg-nut-color rounded-full text-base-background flex flex-col justify-center">
|
||||
<div class="flex flex-row justify-center items-baseline">
|
||||
<span class="text-xl">EC</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">EC</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 EC</div>
|
||||
<div class="font-bold text-3xl">1.2<span class="font-normal text-2xl"> mS/cm</span></div>
|
||||
</div>
|
||||
<div class="flex flex-col items-baseline text-right w-full pl-4">
|
||||
<div class="opacity-50">오차 pH</div>
|
||||
<div class="font-bold text-3xl">0.1<span class="font-normal text-2xl"> mS/cm</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div><i class="fa-solid fa-gear text-base-text/30 text-2xl"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<!-- 양액 온도 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">양액 온도</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<!-- <i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>-->
|
||||
<div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']">20.96</span>
|
||||
<span class="text-2xl">°C</span></div>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-temperature-low text-nut-color text-3xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">양액 온도</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">현재 온도</div>
|
||||
<div class="font-bold text-3xl">20.2<span class="font-normal text-2xl"> °C</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 수위 정보 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">수위 정보</div>
|
||||
<!-- <div class="flex flex-row justify-between items-baseline w-full">-->
|
||||
<!-- <i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>-->
|
||||
<!-- <div class="items-baseline text-right w-full"><span class="text-4xl font-['Chakra_Petch']">20.96</span>-->
|
||||
<!-- <span class="text-2xl">°C</span></div>-->
|
||||
<!-- </div>-->
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-glass-water-droplet text-nut-color text-3xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">수위 정보</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">상태</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">정상</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 원수 탱크 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">원수 탱크</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-fan text-etc-color text-3xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">원수 탱크</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -67,12 +137,23 @@
|
|||
|
||||
<!-- 원수 펌프 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">원수 펌프</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/pump_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">원수 펌프</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -80,12 +161,31 @@
|
|||
|
||||
<!-- 교반기A -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">교반기A</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-fan text-etc-color text-3xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">교반기A</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">설정 시간</div>
|
||||
<div class="font-bold text-3xl">30<span class="font-normal text-2xl"> 분</span></div>
|
||||
</div>
|
||||
<div class="flex flex-col items-baseline text-right w-full pl-4">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -93,12 +193,31 @@
|
|||
|
||||
<!-- 교반기B -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">교반기B</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<i class="fa-solid fa-fan text-etc-color text-3xl text-left"></i>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">교반기B</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-calendar-days text-2xl"></i>
|
||||
<i class="fa-solid fa-angle-right text-2xl opacity-90"></i>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">설정 시간</div>
|
||||
<div class="font-bold text-3xl">30<span class="font-normal text-2xl"> 분</span></div>
|
||||
</div>
|
||||
<div class="flex flex-col items-baseline text-right w-full pl-4">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -106,12 +225,23 @@
|
|||
|
||||
<!-- 급수/공급 펌프 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">급수/공급 펌프</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/pump_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">급수/공급 펌프</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -119,12 +249,23 @@
|
|||
|
||||
<!-- 1번급수 솔벨브 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">1번급수 솔벨브</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">1번급수 솔벨브</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -132,12 +273,23 @@
|
|||
|
||||
<!-- 2번급수 솔벨브 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">2번급수 솔벨브</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">2번급수 솔벨브</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -145,12 +297,23 @@
|
|||
|
||||
<!-- 퇴수 솔벨브 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">퇴수 솔벨브</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">퇴수 솔벨브</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -158,12 +321,23 @@
|
|||
|
||||
<!-- 솔레노이드 벨브A -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">솔레노이드 벨브A</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">솔레노이드 벨브A</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -171,12 +345,23 @@
|
|||
|
||||
<!-- 솔레노이드 벨브B -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">솔레노이드 벨브B</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">솔레노이드 벨브B</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -184,12 +369,23 @@
|
|||
|
||||
<!-- 솔레노이드 벨브C -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">솔레노이드 벨브C</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="flex flex-col justify-between h-full space-y-2">
|
||||
<div class="flex flex-row justify-between w-full">
|
||||
<div class="flex flex-row space-x-4 items-center">
|
||||
<%= render "partials/icons/valve_icon", class: "w-auto h-6 text-etc-color" %>
|
||||
<div class="items-baseline">
|
||||
<span class="text-2xl">솔레노이드 벨브C</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="flex flex-row justify-between items-baseline w-full divide-x divide-base-border">
|
||||
<div class="flex flex-col items-baseline text-right w-full">
|
||||
<div class="opacity-50">모드</div>
|
||||
<div class="flex flex-row items-center space-x-2">
|
||||
<div class="size-5 bg-notice rounded-full"></div>
|
||||
<div class="font-bold text-3xl text-notice">ON</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -198,11 +394,10 @@
|
|||
<!-- 긴급 정지 -->
|
||||
<div class="dashboard-group">
|
||||
<div class="flex flex-col justify-between h-full">
|
||||
<div class="text-xl">긴급 정지</div>
|
||||
<div class="flex flex-row justify-between items-baseline w-full">
|
||||
<i class="fa-solid fa-temperature-quarter text-base-text/80 text-4xl text-left w-full"></i>
|
||||
<div class="items-baseline text-right w-full">
|
||||
<span class="text-4xl font-['Chakra_Petch'] font-light"><div class="btn-toggle-text">ON</div></span>
|
||||
<div class="text-2xl">긴급 정지</div>
|
||||
<div class="flex flex-row justify-end items-baseline w-full">
|
||||
<div class="flex size-12 bg-etc-color rounded-lg items-center justify-center">
|
||||
<i class="fa-solid fa-pause text-white text-3xl text-left"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,18 @@
|
|||
<header class="flex header justify-between items-center" data-controller="timer">
|
||||
<div data-timer-target="output" class="hidden lg:block"></div>
|
||||
<button data-action="click->sidebar#toggle" class="block lg:hidden p-2 cursor-pointer">
|
||||
<i class="fa-solid fa-bars text-2xl"></i>
|
||||
</button>
|
||||
<header class="flex header justify-between items-center px-4" data-controller="timer">
|
||||
<div class="flex items-center space-x-4">
|
||||
<div data-timer-target="output" class="hidden lg:block"></div>
|
||||
<button data-action="click->sidebar#toggle" class="block lg:hidden p-2 cursor-pointer">
|
||||
<i class="fa-solid fa-bars text-2xl"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- 로그인 정보 -->
|
||||
<div class="flex items-center space-x-2">
|
||||
<i class="fa-solid fa-user-circle text-3xl text-base-text/60"></i>
|
||||
<span class="font-bold text-base-text">홍길동</span><span class="font-normal"> 님</span>
|
||||
<%= button_to "로그아웃", root_path,
|
||||
method: :post,
|
||||
data: { turbo_confirm: "로그아웃 하시겠습니까?" },
|
||||
class: "btn bg-danger" %>
|
||||
</div>
|
||||
</header>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<div class="mt-8">
|
||||
<%= link_to environment_index_path(id: 1), class: "menu-group #{'menu-group-active' if current_page?(environment_index_path(id: 1))}" do %>
|
||||
<div class="menu-group-icon">
|
||||
<i class="fa-solid fa-chart-line text-2xl"></i>
|
||||
<i class="fa-solid fa-leaf text-2xl"></i>
|
||||
</div>
|
||||
<div class="menu-group-name">
|
||||
1동 환경부
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
<hr>
|
||||
<%= link_to environment_index_path(id: 2), class: "menu-group #{'menu-group-active' if current_page?(environment_index_path(id: 2))}" do %>
|
||||
<div class="menu-group-icon">
|
||||
<i class="fa-solid fa-chart-line text-2xl"></i>
|
||||
<i class="fa-solid fa-leaf text-2xl"></i>
|
||||
</div>
|
||||
<div class="menu-group-name">
|
||||
2동 환경부
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<hr>
|
||||
<%= link_to rack_index_path, class: "menu-group #{'menu-group-active' if current_page?(rack_index_path)}" do %>
|
||||
<div class="menu-group-icon">
|
||||
<i class="fa-solid fa-chart-line text-2xl"></i>
|
||||
<i class="fa-solid fa-timeline text-2xl"></i>
|
||||
</div>
|
||||
<div class="menu-group-name">
|
||||
통합 랙 정보
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="286" height="164" viewBox="0 0 286 164" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="<%= local_assigns[:class] %>">
|
||||
<path d="M259 153L179.015 153C197.205 142.983 211.133 126.18 217.385 106L259 106L259 94L286 94L286 164L259 164L259 153Z"/>
|
||||
<path d="M6.11959e-06 -1.21518e-05L27 -9.79135e-06L27 11L139 11L139 11.0078C108.644 11.4269 82.8939 30.8954 73.1602 58L27 58L27 70L0 70L6.11959e-06 -1.21518e-05Z"/>
|
||||
<path d="M140 11C179.212 11 211 42.7878 211 82C211 121.212 179.212 153 140 153C100.788 153 69 121.212 69 82C69 42.7878 100.788 11 140 11ZM155.737 102.695C151.368 106.023 145.916 108 140 108C134.331 108 129.087 106.185 124.814 103.105L102.157 116.188C111.49 126.512 124.987 133 140 133C155.245 133 168.925 126.308 178.271 115.705L155.737 102.695ZM131 31.792C107.126 36.0428 89 56.9045 89 82C89 88.3231 90.1514 94.3772 92.2549 99.9648L114.505 87.1191C114.174 85.464 114 83.7523 114 82C114 70.8045 121.076 61.2623 131 57.6006V31.792ZM150 57.9932C159.396 61.9114 166 71.1843 166 82C166 83.5208 165.868 85.0108 165.617 86.46L187.967 99.3633C189.929 93.9436 191 88.0969 191 82C191 57.2561 173.378 36.6283 150 31.9805V57.9932ZM140 72C134.477 72 130 76.4772 130 82C130 87.5228 134.477 92 140 92C145.523 92 150 87.5228 150 82C150 76.4772 145.523 72 140 72Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1,12 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 122.88 117.35" fill="currentColor" class="<%= local_assigns[:class] %>">
|
||||
<path d="M79.22,54.41c5.16,3.03,9.06,6.88,11.81,11.19h5.36v36.21h-5.73c-5.72,9.03-15.74,15.53-28.98,15.53
|
||||
c-13.23,0-23.34-6.5-29.09-15.53h-5.96V65.6h5.91c2.98-4.48,7.25-8.48,12.96-11.58c3.04-1.64,4.88-3.69,4.9-5.53
|
||||
c0.03-2.33-2.52-4.31-5.26-4.31h-1.36c-3.32,0-6.04-2.72-6.04-6.04l0,0c0-3.32,2.72-6.04,6.04-6.04h7.76l6.1-7.57
|
||||
c-0.02-0.28-0.04-0.57-0.04-0.87v-9.99H32.87c-3.77,0-6.85-3.08-6.85-6.85l0,0c0-3.76,3.08-6.85,6.85-6.85h58.18
|
||||
c3.76,0,6.85,3.08,6.85,6.85l0,0c0,3.77-3.08,6.85-6.85,6.85H67.51v9.99c0,0.41-0.03,0.82-0.07,1.21l5.48,7.23h6.67
|
||||
c3.32,0,6.04,2.72,6.04,6.04l0,0c0,3.32-2.72,5.97-6.04,6.04c-4.57,0.1-6.25,2.06-6.04,4.34C73.91,52.73,76.83,53.01,79.22,54.41
|
||||
L79.22,54.41z M101.34,65.6h4.2v-8.65c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79v53.51
|
||||
c0,1.54-1.26,2.79-2.79,2.79h-11.76c-1.54,0-2.79-1.26-2.79-2.79v-8.65h-4.2V65.6L101.34,65.6z M21.67,101.81h-4.33v8.65
|
||||
c0,1.54-1.26,2.79-2.79,2.79H2.79C1.26,113.25,0,112,0,110.46V56.95c0-1.54,1.26-2.79,2.79-2.79h11.76c1.54,0,2.79,1.26,2.79,2.79
|
||||
v8.65h4.33V101.81L21.67,101.81z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -11,7 +11,7 @@ Rails.application.routes.draw do
|
|||
|
||||
# Defines the root path route ("/")
|
||||
|
||||
root to: redirect('/environment?id=1')
|
||||
root to: redirect("/environment?id=1")
|
||||
|
||||
resources :schedules do
|
||||
member do
|
||||
|
|
@ -36,6 +36,7 @@ Rails.application.routes.draw do
|
|||
get "view_humidity"
|
||||
get "view_co2"
|
||||
get "view_area"
|
||||
get "edit_temp"
|
||||
end
|
||||
end
|
||||
resources :nutrient
|
||||
|
|
|
|||
Loading…
Reference in New Issue