diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index bd253da195..df6e3a3341 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -83,22 +83,23 @@
/obj/structure/janitorialcart/attack_hand(mob/user)
- user.set_machine(src)
- var/dat
- if(mybag)
- dat += "[mybag.name]
"
- if(mymop)
- dat += "[mymop.name]
"
- if(myspray)
- dat += "[myspray.name]
"
- if(myreplacer)
- dat += "[myreplacer.name]
"
- if(signs)
- dat += "[signs] sign\s
"
- var/datum/browser/popup = new(user, "janicart", name, 240, 160)
- popup.set_content(dat)
- popup.open()
+ ui_interact(user)
+ return
+/obj/structure/janitorialcart/ui_interact(var/mob/user, var/ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+ var/data[0]
+ data["name"] = capitalize(name)
+ data["bag"] = mybag ? capitalize(mybag.name) : null
+ data["mop"] = mymop ? capitalize(mymop.name) : null
+ data["spray"] = myspray ? capitalize(myspray.name) : null
+ data["replacer"] = myreplacer ? capitalize(myreplacer.name) : null
+ data["signs"] = signs ? "[signs] sign\s" : null
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "janitorcart.tmpl", "Janitorial cart", 240, 160)
+ ui.set_initial_data(data)
+ ui.open()
/obj/structure/janitorialcart/Topic(href, href_list)
if(!in_range(src, usr))
@@ -106,36 +107,39 @@
if(!isliving(usr))
return
var/mob/living/user = usr
- if(href_list["garbage"])
- if(mybag)
- user.put_in_hands(mybag)
- user << "You take [mybag] from [src]."
- mybag = null
- if(href_list["mop"])
- if(mymop)
- user.put_in_hands(mymop)
- user << "You take [mymop] from [src]."
- mymop = null
- if(href_list["spray"])
- if(myspray)
- user.put_in_hands(myspray)
- user << "You take [myspray] from [src]."
- myspray = null
- if(href_list["replacer"])
- if(myreplacer)
- user.put_in_hands(myreplacer)
- user << "You take [myreplacer] from [src]."
- myreplacer = null
- if(href_list["sign"])
- if(signs)
- var/obj/item/weapon/caution/Sign = locate() in src
- if(Sign)
- user.put_in_hands(Sign)
- user << "You take \a [Sign] from [src]."
- signs--
- else
- warning("[src] signs ([signs]) didn't match contents")
- signs = 0
+
+ if(href_list["take"])
+ switch(href_list["take"])
+ if("garbage")
+ if(mybag)
+ user.put_in_hands(mybag)
+ user << "You take [mybag] from [src]."
+ mybag = null
+ if("mop")
+ if(mymop)
+ user.put_in_hands(mymop)
+ user << "You take [mymop] from [src]."
+ mymop = null
+ if("spray")
+ if(myspray)
+ user.put_in_hands(myspray)
+ user << "You take [myspray] from [src]."
+ myspray = null
+ if("replacer")
+ if(myreplacer)
+ user.put_in_hands(myreplacer)
+ user << "You take [myreplacer] from [src]."
+ myreplacer = null
+ if("sign")
+ if(signs)
+ var/obj/item/weapon/caution/Sign = locate() in src
+ if(Sign)
+ user.put_in_hands(Sign)
+ user << "You take \a [Sign] from [src]."
+ signs--
+ else
+ warning("[src] signs ([signs]) didn't match contents")
+ signs = 0
update_icon()
updateUsrDialog()
diff --git a/nano/templates/janitorcart.tmpl b/nano/templates/janitorcart.tmpl
new file mode 100644
index 0000000000..916b92bc72
--- /dev/null
+++ b/nano/templates/janitorcart.tmpl
@@ -0,0 +1,30 @@
+