1
0
mirror of https://github.com/taigrr/shorturl synced 2025-01-18 04:03:16 -08:00

Improve layouts

1. Validate input url is empty for index and view page
2. Display origin full url in view page
3. Do not show edit and delete button on small screen
4. Add tooltip for view button
5. Pad domain on view page
This commit is contained in:
srxr 2021-03-30 03:26:16 +00:00
parent 31c239e486
commit 6dfe1f83f0
No known key found for this signature in database
GPG Key ID: 5F5DB27AF89FA243
4 changed files with 67 additions and 19 deletions

View File

@ -167,9 +167,11 @@ func (s *Server) ViewHandler() httprouter.Handle {
struct { struct {
ID string ID string
URL string URL string
Ori string
}{ }{
ID: u.ID, ID: u.ID,
URL: fullURL.String(), URL: fullURL.String(),
Ori: u.URL,
}, },
) )
} }

View File

@ -6,8 +6,8 @@
<form class="mt-10" action="/e/{{.ID}}" method="POST"> <form class="mt-10" action="/e/{{.ID}}" method="POST">
<div class="form-group input-group"> <div class="form-group input-group">
<input class="form-input column col-1" type="text" name="id" value="{{.ID}}" /> <input class="form-input column col-1" type="text" name="id" value="{{.ID}}" />
<input class="form-input" type="text" name="url" value="{{.URL}}" placeholder="Enter long url here..." /> <input class="form-input" id="input-url" type="text" name="url" value="{{.URL}}" placeholder="Enter long url here..." />
<button class="btn btn-primary" type="submit">Edit</button> <button class="btn btn-primary" id="submit" type="submit">OK</button>
<a class="btn btn-action" href="/u/{{.ID}}"> <a class="btn btn-action" href="/u/{{.ID}}">
<i class="icon icon-forward">View</i> <i class="icon icon-forward">View</i>
</a> </a>
@ -17,3 +17,20 @@
</div> </div>
</section> </section>
{{end}} {{end}}
{{define "scripts"}}
<script src="/js/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#input-url").focus(function() {
$("#submit").removeAttr("data-tooltip", "Please enter long url").removeClass("tooltip tooltip-left");
});
$("#submit").click(function() {
if ($("#input-url").val().trim() === "") {
$(this).attr("data-tooltip", "Please enter long url").addClass("tooltip tooltip-left");
return false;
}
});
});
</script>
{{end}}

View File

@ -3,31 +3,51 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
{{ range $URL := .URLList }} {{ range $URL := .URLList }}
<div class="input-group mb-5"> <div class="input-group col-12">
<span class="input-group-addon d-inline-block"> <span class="input-group-addon col-8 d-inline-block text-ellipsis">
{{ $URL.ID }} {{ $URL.ID }}
<i class="icon icon-forward"></i> <i class="icon icon-forward"></i>
{{ $URL.URL -}} {{ $URL.URL -}}
</span> </span>
<a class="btn btn-action btn-primary" href="/u/{{$URL.ID}}"> <div class="popover popover-right">
<a class="btn btn-action btn-primary tooltip tooltip-left" data-tooltip="View Detail" href="/u/{{$URL.ID}}">
<i class="icon icon-forward">View</i> <i class="icon icon-forward">View</i>
</a> </a>
<a class="btn btn-action" href="/e/{{$URL.ID}}">
<i class="icon icon-edit">Edit</i>
</a>
<a class="btn btn-action" href="/d/{{$URL.ID}}">
<i class="icon icon-delete">Delete</i>
</a>
</div> </div>
<a class="btn btn-action hide-md" href="/e/{{$URL.ID}}">
<i class="icon icon-edit">Edit</i>
</a>
<a class="btn btn-action hide-lg" href="/d/{{$URL.ID}}">
<i class="icon icon-delete">Delete</i>
</a>
</div>
{{end}} {{end}}
<form class="mt-10" action="" method="POST"> <form class="mt-10" action="" method="POST">
<div class="form-group input-group"> <div class="form-group input-group">
<label class="form-label" for="input-url"></label> <label class="form-label" for="input-url"></label>
<input class="form-input" id="input-url" type="text" name="url" placeholder="Enter long url here..." autofocus> <input class="form-input" id="input-url" type="text" name="url" placeholder="Enter long url here..."
<button class="btn btn-primary" type="submit">Shorten</button> autofocus>
<button class="btn btn-primary" id="submit" type="submit">Shorten</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</section> </section>
{{end}} {{end}}
{{define "scripts"}}
<script src="/js/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#input-url").focus(function() {
$("#submit").removeAttr("data-tooltip", "Please enter long url").removeClass("tooltip tooltip-left");
});
$("#submit").click(function() {
if ($("#input-url").val().trim() === "") {
$(this).attr("data-tooltip", "Please enter long url").addClass("tooltip tooltip-left");
return false;
}
});
});
</script>
{{end}}

View File

@ -2,9 +2,10 @@
<section class="container"> <section class="container">
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<p>Your short url is: <a href="/r/{{.ID}}">{{.ID}}</a></p> <p class="text-ellipsis text-secondary">Your short url is: <a href="/r/{{.ID}}">{{.ID}}</a></p>
<p class="text-ellipsis text-secondary">Your full url is: <a href="{{.Ori}}">{{.Ori}}</a></p>
<div class="form-group input-group"> <div class="form-group input-group">
<input class="form-input" id="input-url" value="{{.URL}}" readonly /> <input class="form-input text-ellipsis" id="input-url" value="{{.URL}}" readonly />
<button class="btn btn-primary hide" id="btn-copy" data-clipboard-target="#input-url">Copy</button> <button class="btn btn-primary hide" id="btn-copy" data-clipboard-target="#input-url">Copy</button>
<a class="btn btn-action" href="/e/{{.ID}}"> <a class="btn btn-action" href="/e/{{.ID}}">
<i class="icon icon-edit">Edit</i> <i class="icon icon-edit">Edit</i>
@ -30,6 +31,12 @@ $(document).ready(function() {
}, timeout || 3000); }, timeout || 3000);
}; };
var padShortURL = function() {
var domain = window.location.origin;
var short = $("#input-url").val().replace(domain, "");
$("#input-url").val(domain + short);
};
clipboard.on("success", function(e) { clipboard.on("success", function(e) {
e.clearSelection(); e.clearSelection();
displayTooltip("#btn-copy", "Copied!"); displayTooltip("#btn-copy", "Copied!");
@ -40,6 +47,8 @@ $(document).ready(function() {
}); });
$("#btn-copy").removeClass("hide"); $("#btn-copy").removeClass("hide");
padShortURL();
}); });
</script> </script>
{{end}} {{end}}