Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
Stable Diffusion Webui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
novelai-storage
Stable Diffusion Webui
Commits
7b1db45e
Commit
7b1db45e
authored
Oct 11, 2022
by
yfszzx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
images history improvement
parent
1e18a5ff
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
238 additions
and
166 deletions
+238
-166
javascript/images_history.js
javascript/images_history.js
+114
-56
javascript/jquery-3.6.0.min.js
javascript/jquery-3.6.0.min.js
+0
-2
modules/images_history.py
modules/images_history.py
+121
-108
style.css
style.css
+3
-0
No files found.
javascript/images_history.js
View file @
7b1db45e
function
init_images_history
(){
images_history_tab_list
=
[
"
txt2img
"
,
"
img2img
"
,
"
extras
"
]
function
images_history_init
(){
if
(
gradioApp
().
getElementById
(
'
txt2img_images_history_first_page
'
)
==
null
)
{
setTimeout
(
init_images_history
,
10
00
)
setTimeout
(
images_history_init
,
5
00
)
}
else
{
tab_list
=
[
"
txt2img
"
,
"
img2img
"
]
for
(
i
in
tab_list
){
tab
=
tab_list
[
i
]
gradioApp
().
getElementById
(
tab
+
"
_images_history_first_page
"
).
click
()
$
(
gradioApp
().
getElementById
(
tab
+
'
_images_history
'
)).
addClass
(
"
images_history_gallery
"
)
item
=
$
(
gradioApp
().
getElementById
(
tab
+
'
_images_history_set_index
'
))
item
.
addClass
(
"
images_history_set_index
"
)
item
.
hide
()
for
(
i
in
images_history_tab_list
){
tab
=
images_history_tab_list
[
i
]
gradioApp
().
getElementById
(
tab
+
'
_images_history
'
).
classList
.
add
(
"
images_history_gallery
"
)
gradioApp
().
getElementById
(
tab
+
'
_images_history_set_index
'
).
classList
.
add
(
"
images_history_set_index
"
)
}
gradioApp
().
getElementById
(
"
txt2img_images_history_first_page
"
).
click
()
}
}
setTimeout
(
images_history_init
,
500
)
var
images_history_button_actions
=
function
(){
if
(
!
this
.
classList
.
contains
(
"
transform
"
)){
gallery
=
this
.
parentElement
while
(
!
gallery
.
classList
.
contains
(
"
images_history_gallery
"
)){
gallery
=
gallery
.
parentElement
}
buttons
=
gallery
.
querySelectorAll
(
"
.gallery-item
"
)
i
=
0
hidden_list
=
[]
buttons
.
forEach
(
function
(
e
){
if
(
e
.
style
.
display
==
"
none
"
){
hidden_list
.
push
(
i
)
}
i
+=
1
})
if
(
hidden_list
.
length
>
0
){
setTimeout
(
images_history_hide_buttons
,
10
,
hidden_list
,
gallery
)
}
}
images_history_set_image_info
(
this
)
}
setTimeout
(
init_images_history
,
1000
)
onUiUpdate
(
function
(){
fullImg_preview
=
gradioApp
().
querySelectorAll
(
'
#txt2img_images_history img.w-full
'
)
if
(
fullImg_preview
.
length
>
0
){
fullImg_preview
.
forEach
(
set_history_index_from_img
);
}
fullImg_preview
=
gradioApp
().
querySelectorAll
(
'
#img2img_images_history img.w-full
'
)
if
(
fullImg_preview
.
length
>
0
){
fullImg_preview
.
forEach
(
set_history_index_from_img
);
for
(
i
in
images_history_tab_list
){
tab
=
images_history_tab_list
[
i
]
buttons
=
gradioApp
().
querySelectorAll
(
'
#
'
+
tab
+
'
_images_history .gallery-item
'
)
buttons
.
forEach
(
function
(
bnt
){
bnt
.
addEventListener
(
'
click
'
,
images_history_button_actions
,
true
)
});
}
})
function
images_history_hide_buttons
(
hidden_list
,
gallery
){
buttons
=
gallery
.
querySelectorAll
(
"
.gallery-item
"
)
num
=
0
buttons
.
forEach
(
function
(
e
){
if
(
e
.
style
.
display
==
"
none
"
){
num
+=
1
}
})
if
(
num
==
hidden_list
.
length
){
setTimeout
(
images_history_hide_buttons
,
10
,
hidden_list
,
gallery
)
}
for
(
i
in
hidden_list
){
buttons
[
hidden_list
[
i
]].
style
.
display
=
"
none
"
}
}
function
set_history_gallery_index
(
item
){
buttons
=
item
.
find
(
"
.gallery-item
"
)
// alert(item.attr("id") + " " + buttons.length)
function
images_history_set_image_info
(
button
){
item
=
button
.
parentElement
while
(
item
.
tagName
!=
"
DIV
"
){
item
=
item
.
parentElement
}
buttons
=
item
.
querySelectorAll
(
"
.gallery-item
"
)
index
=
-
1
i
=
0
buttons
.
each
(
function
(){
if
(
$
(
this
).
hasClass
(
"
!ring-2
"
)){
index
=
i
}
buttons
.
forEach
(
function
(
e
){
if
(
e
==
button
){
index
=
i
}
if
(
e
.
style
.
display
!=
"
none
"
){
i
+=
1
})
if
(
index
==
-
1
){
setTimeout
(
set_history_gallery_index
,
10
,
item
)
}
else
{
item
=
item
.
find
(
"
.images_history_set_index
"
).
first
()
item
.
attr
(
"
img_index
"
,
index
)
item
.
click
()
}
}
function
set_history_index_from_img
(
e
){
if
(
e
&&
e
.
parentElement
.
tagName
==
'
BUTTON
'
){
bnt
=
$
(
e
).
parent
()
if
(
bnt
.
hasClass
(
"
transform
"
)){
bnt
.
off
(
"
click
"
).
on
(
"
click
"
,
function
(){
set_history_gallery_index
(
$
(
this
).
parents
(
"
.images_history_gallery
"
).
first
())
})
}
else
{
bnt
.
off
(
"
mousedown
"
).
on
(
"
mousedown
"
,
function
(){
set_history_gallery_index
(
$
(
this
).
parents
(
"
.images_history_gallery
"
).
first
())
gallery
=
button
.
parentElement
while
(
!
gallery
.
classList
.
contains
(
"
images_history_gallery
"
)){
gallery
=
gallery
.
parentElement
}
set_btn
=
gallery
.
querySelector
(
"
.images_history_set_index
"
)
set_btn
.
setAttribute
(
"
img_index
"
,
index
)
set_btn
.
click
()
}
function
images_history_get_current_img
(
tabname
,
image_path
,
files
){
s
=
gradioApp
().
getElementById
(
tabname
+
'
_images_history_set_index
'
).
getAttribute
(
"
img_index
"
)
return
[
s
,
image_path
,
files
]
}
function
images_history_delete
(
tabname
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
){
image_index
=
parseInt
(
image_index
)
tab
=
gradioApp
().
getElementById
(
tabname
+
'
_images_history
'
)
set_btn
=
tab
.
querySelector
(
"
.images_history_set_index
"
)
buttons
=
[]
tab
.
querySelectorAll
(
"
.gallery-item
"
).
forEach
(
function
(
e
){
if
(
e
.
style
.
display
!=
'
none
'
){
buttons
.
push
(
e
)
}
})
img_num
=
buttons
.
length
/
2
if
(
img_num
==
1
){
setTimeout
(
function
(
tabname
){
gradioApp
().
getElementById
(
tabname
+
'
_images_history_renew_page
'
).
click
()
},
30
,
tabname
)
}
else
{
buttons
[
image_index
].
style
.
display
=
'
none
'
buttons
[
image_index
+
img_num
].
style
.
display
=
'
none
'
if
(
image_index
>=
img_num
-
1
){
console
.
log
(
buttons
.
length
,
img_num
)
btn
=
buttons
[
img_num
-
2
]
}
else
{
btn
=
buttons
[
image_index
+
1
]
}
setTimeout
(
function
(
btn
){
btn
.
click
()},
30
,
btn
)
}
}
function
images_history_get_current_img
(
is_image2image
,
image_path
,
files
){
head
=
is_image2image
?
"
img2img
"
:
"
txt2img
"
s
=
$
(
gradioApp
().
getElementById
(
head
+
'
_images_history_set_index
'
)).
attr
(
"
img_index
"
)
return
[
s
,
image_path
,
files
]
return
[
tabname
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
]
}
function
images_history_turnpage
(
img_path
,
page_index
,
image_index
,
tabname
){
buttons
=
gradioApp
().
getElementById
(
tabname
+
'
_images_history
'
).
querySelectorAll
(
"
.gallery-item
"
)
buttons
.
forEach
(
function
(
elem
)
{
elem
.
style
.
display
=
'
block
'
})
return
[
img_path
,
page_index
,
image_index
,
tabname
]
}
javascript/jquery-3.6.0.min.js
deleted
100644 → 0
View file @
1e18a5ff
This diff is collapsed.
Click to expand it.
modules/images_history.py
View file @
7b1db45e
import
os
def
get_recent_images
(
dir_name
,
page_index
,
step
,
image_index
):
print
(
image_index
)
#
print(image_index)
page_index
=
int
(
page_index
)
f_list
=
os
.
listdir
(
dir_name
)
file_list
=
[]
...
...
@@ -16,7 +16,7 @@ def get_recent_images(dir_name, page_index, step, image_index):
page_index
=
max_page_index
if
page_index
>
max_page_index
else
page_index
idx_frm
=
(
page_index
-
1
)
*
num
file_list
=
file_list
[
idx_frm
:
idx_frm
+
num
]
print
(
f
"Loading history page {page_index}"
)
#print(f"Loading history page {page_index}")
image_index
=
int
(
image_index
)
if
image_index
<
0
or
image_index
>
len
(
file_list
)
-
1
:
current_file
=
None
...
...
@@ -25,44 +25,52 @@ def get_recent_images(dir_name, page_index, step, image_index):
current_file
=
file_list
[
int
(
image_index
)]
hide_image
=
os
.
path
.
join
(
dir_name
,
current_file
)
return
[
os
.
path
.
join
(
dir_name
,
file
)
for
file
in
file_list
],
page_index
,
file_list
,
current_file
,
hide_image
def
first_page_click
(
dir_name
,
page_index
,
image_index
):
def
first_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
1
,
0
,
image_index
)
def
end_page_click
(
dir_name
,
page_index
,
image_index
):
def
end_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
-
1
,
0
,
image_index
)
def
prev_page_click
(
dir_name
,
page_index
,
image_index
):
def
prev_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
-
1
,
image_index
)
def
next_page_click
(
dir_name
,
page_index
,
image_index
):
def
next_page_click
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
1
,
image_index
)
def
page_index_change
(
dir_name
,
page_index
,
image_index
):
def
page_index_change
(
dir_name
,
page_index
,
image_index
,
tabname
):
return
get_recent_images
(
dir_name
,
page_index
,
0
,
image_index
)
def
show_image_info
(
num
,
image_path
,
filenames
):
#print("set img",num)
file
=
filenames
[
int
(
num
)]
return
file
,
num
,
os
.
path
.
join
(
image_path
,
file
)
def
delete_image
(
is_img2img
,
dir_name
,
name
,
page_index
,
filenames
,
image_index
):
print
(
"filename"
,
name
)
def
delete_image
(
tabname
,
dir_name
,
name
,
page_index
,
filenames
,
image_index
):
#
print("filename", name)
path
=
os
.
path
.
join
(
dir_name
,
name
)
if
os
.
path
.
exists
(
path
):
print
(
f
"Delete file {path}"
)
os
.
remove
(
path
)
images
,
page_index
,
file_list
,
current_file
,
hide_image
=
get_recent_images
(
dir_name
,
page_index
,
0
,
image_index
)
return
images
,
page_index
,
file_list
,
current_file
,
hide_image
def
show_images_history
(
gr
,
opts
,
is_img2img
,
run_pnginfo
,
switch_dict
):
def
id_name
(
is_img2img
,
name
):
return
(
"img2img"
if
is_img2img
else
"txt2img"
)
+
"_"
+
name
if
is_img2img
:
dir_name
=
opts
.
outdir_img2img_samples
new_file_list
=
[]
for
f
in
filenames
:
if
f
==
name
:
continue
new_file_list
.
append
(
f
)
else
:
print
(
f
"Not exists file {path}"
)
new_file_list
=
filenames
return
page_index
,
new_file_list
def
show_images_history
(
gr
,
opts
,
tabname
,
run_pnginfo
,
switch_dict
):
if
tabname
==
"txt2img"
:
dir_name
=
opts
.
outdir_txt2img_samples
elif
tabname
==
"img2img"
:
dir_name
=
opts
.
outdir_img2img_samples
elif
tabname
==
"extras"
:
dir_name
=
opts
.
outdir_extras_samples
with
gr
.
Row
():
first_page
=
gr
.
Button
(
'First'
,
elem_id
=
id_name
(
is_img2img
,
"images_history_first_page"
))
renew_page
=
gr
.
Button
(
'Renew'
,
elem_id
=
tabname
+
"_images_history_renew_page"
)
first_page
=
gr
.
Button
(
'First'
,
elem_id
=
tabname
+
"_images_history_first_page"
)
prev_page
=
gr
.
Button
(
'Prev'
)
page_index
=
gr
.
Number
(
value
=
1
,
label
=
"Page Index"
)
next_page
=
gr
.
Button
(
'Next'
)
next_page
=
gr
.
Button
(
'Next'
,
elem_id
=
tabname
+
"_images_history_next_page"
)
end_page
=
gr
.
Button
(
'End'
)
with
gr
.
Row
(
elem_id
=
id_name
(
is_img2img
,
"images_history"
)):
with
gr
.
Row
(
elem_id
=
tabname
+
"_images_history"
):
with
gr
.
Row
():
with
gr
.
Column
():
history_gallery
=
gr
.
Gallery
(
show_label
=
False
)
.
style
(
grid
=
6
)
...
...
@@ -73,14 +81,14 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
pnginfo_send_to_img2img
=
gr
.
Button
(
'Send to img2img'
)
with
gr
.
Row
():
with
gr
.
Column
():
img_file_info
=
gr
.
Textbox
(
dir_name
,
label
=
"Generate Info"
)
img_file_info
=
gr
.
Textbox
(
label
=
"Generate Info"
)
img_file_name
=
gr
.
Textbox
(
label
=
"File Name"
)
with
gr
.
Row
():
# hiden items
img_path
=
gr
.
Textbox
(
dir_name
,
visible
=
False
)
is_img2img_flag
=
gr
.
Checkbox
(
is_img2img
,
visible
=
False
)
tabname_box
=
gr
.
Textbox
(
tabname
,
visible
=
False
)
image_index
=
gr
.
Textbox
(
value
=-
1
,
visible
=
False
)
set_index
=
gr
.
Button
(
'set_index'
,
elem_id
=
id_name
(
is_img2img
,
"images_history_set_index"
)
)
set_index
=
gr
.
Button
(
'set_index'
,
elem_id
=
tabname
+
"_images_history_set_index"
,
visible
=
False
)
filenames
=
gr
.
State
()
hide_image
=
gr
.
Image
(
visible
=
False
,
type
=
"pil"
)
info1
=
gr
.
Textbox
(
visible
=
False
)
...
...
@@ -88,18 +96,20 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
# turn pages
gallery_inputs
=
[
img_path
,
page_index
,
image_inde
x
]
gallery_inputs
=
[
img_path
,
page_index
,
image_index
,
tabname_bo
x
]
gallery_outputs
=
[
history_gallery
,
page_index
,
filenames
,
img_file_name
,
hide_image
]
first_page
.
click
(
first_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
next_page
.
click
(
next_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
prev_page
.
click
(
prev_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
end_page
.
click
(
end_page_click
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
page_index
.
submit
(
page_index_change
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
#page_index.change(page_index_change, inputs=[is_img2img_flag, img_path, page_index], outputs=[history_gallery, page_index])
first_page
.
click
(
first_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
next_page
.
click
(
next_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
prev_page
.
click
(
prev_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
end_page
.
click
(
end_page_click
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
page_index
.
submit
(
page_index_change
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
renew_page
.
click
(
page_index_change
,
_js
=
"images_history_turnpage"
,
inputs
=
gallery_inputs
,
outputs
=
gallery_outputs
)
#page_index.change(page_index_change, inputs=[tabname_box, img_path, page_index], outputs=[history_gallery, page_index])
#other funcitons
set_index
.
click
(
show_image_info
,
_js
=
"images_history_get_current_img"
,
inputs
=
[
is_img2img_flag
,
img_path
,
filenames
],
outputs
=
[
img_file_name
,
image_index
,
hide_image
])
delete
.
click
(
delete_image
,
inputs
=
[
is_img2img_flag
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
],
outputs
=
gallery_outputs
)
set_index
.
click
(
show_image_info
,
_js
=
"images_history_get_current_img"
,
inputs
=
[
tabname_box
,
img_path
,
filenames
],
outputs
=
[
img_file_name
,
image_index
,
hide_image
])
delete
.
click
(
delete_image
,
_js
=
"images_history_delete"
,
inputs
=
[
tabname_box
,
img_path
,
img_file_name
,
page_index
,
filenames
,
image_index
],
outputs
=
[
page_index
,
filenames
]
)
hide_image
.
change
(
fn
=
run_pnginfo
,
inputs
=
[
hide_image
],
outputs
=
[
info1
,
img_file_info
,
info2
])
switch_dict
[
"fn"
](
pnginfo_send_to_txt2img
,
switch_dict
[
"t2i"
],
img_file_info
,
'switch_to_txt2img'
)
switch_dict
[
"fn"
](
pnginfo_send_to_img2img
,
switch_dict
[
"i2i"
],
img_file_info
,
'switch_to_img2img_img2img'
)
...
...
@@ -108,10 +118,13 @@ def show_images_history(gr, opts, is_img2img, run_pnginfo, switch_dict):
def
create_history_tabs
(
gr
,
opts
,
run_pnginfo
,
switch_dict
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history
:
with
gr
.
Tabs
()
as
tabs
:
with
gr
.
Tab
(
"txt2img history"
,
id
=
"images_history_txt2img
"
):
with
gr
.
Tab
(
"txt2img history
"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_txt2img
:
show_images_history
(
gr
,
opts
,
False
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"img2img history"
,
id
=
"images_history_img2img"
):
show_images_history
(
gr
,
opts
,
"txt2img"
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"img2img history"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_img2img
:
show_images_history
(
gr
,
opts
,
"img2img"
,
run_pnginfo
,
switch_dict
)
with
gr
.
Tab
(
"extras history"
):
with
gr
.
Blocks
(
analytics_enabled
=
False
)
as
images_history_img2img
:
show_images_history
(
gr
,
opts
,
True
,
run_pnginfo
,
switch_dict
)
show_images_history
(
gr
,
opts
,
"extras"
,
run_pnginfo
,
switch_dict
)
return
images_history
style.css
View file @
7b1db45e
...
...
@@ -463,3 +463,6 @@ input[type="range"]{
max-width
:
32em
;
padding
:
0
;
}
.images-history-hidden
{
display
:
none
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment